如何使用Structuremap将自定义命名空间中的Redis设置为ServiceStack web应用程序上的缓存和MQ
我想将我的应用程序设置为使用Redis作为会话等的缓存,并运行我的消息队列 我的应用程序是一个ASP.net MVC网站以及基于ServiceStack的Json服务提供商。配置的最佳方式是什么 我希望能够将IMessageQueueClient传递到我的服务类和控制器中,以便将任务添加到队列中 我有点不知道该做什么。我的代码如下:如何使用Structuremap将自定义命名空间中的Redis设置为ServiceStack web应用程序上的缓存和MQ,redis,servicestack,structuremap,Redis,servicestack,Structuremap,我想将我的应用程序设置为使用Redis作为会话等的缓存,并运行我的消息队列 我的应用程序是一个ASP.net MVC网站以及基于ServiceStack的Json服务提供商。配置的最佳方式是什么 我希望能够将IMessageQueueClient传递到我的服务类和控制器中,以便将任务添加到队列中 我有点不知道该做什么。我的代码如下: //Redis Client Manager var pooledClientManager = new PooledRedisClientManager(Conf
//Redis Client Manager
var pooledClientManager = new PooledRedisClientManager(ConfigurationManager.AppSettings.Get("RedisServer"));
pooledClientManager.NamespacePrefix = "myApp-";
For<IRedisClientsManager>().Singleton().Use(x => pooledClientManager);
//Cache
For<ICacheClient>().Use(c => c.GetInstance<IRedisClientsManager>().GetCacheClient());
//MQ
MyApplication.MqService = new RedisMqServer(pooledClientManager);
For<IMessageQueueClient>().Singleton(). Use(
x => MyApplication.MqService.CreateMessageQueueClient());
For<IMessageService>().Singleton().Use(x=>MyApplication.MqService);
//Redis客户端管理器
var pooledClientManager=new PooledRedisClientManager(ConfigurationManager.AppSettings.Get(“RedisServer”);
pooledClientManager.NamespacePrefix=“myApp-”;
For().Singleton().Use(x=>pooledClientManager);
//缓存
For().Use(c=>c.GetInstance().GetCacheClient());
//MQ
MyApplication.MqService=新的RedisMqServer(pooledClientManager);
For().Singleton()。使用(
x=>MyApplication.MqService.CreateMessageQueueClient());
For().Singleton().Use(x=>MyApplication.MqService);
然后我稍后调用MyApplication.MqService.RegisterHandler(etc)
谢谢你的帮助 NamespacePrefix仅用于RedisClient维护的内部数据结构,不影响用户指定的键。好的,感谢您的澄清。我想对redis对象应用一种新的命名约定,以便多个应用程序可以使用同一台redis服务器。最简单的方法是什么?另外,对我在Structuremap中使用的范围有何评论?是否正确/最佳?谢谢如果要使用同一个服务器实例,唯一真正的选择是使用不同的数据库。否则,您可以在客户机上创建并使用您自己的抽象,该客户机使用自定义前缀作为所有键的前缀,类似于您在这里提出的建议。