Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Structuremap将自定义命名空间中的Redis设置为ServiceStack web应用程序上的缓存和MQ_Redis_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack_Structuremap - Fatal编程技术网 servicestack,structuremap,Redis,servicestack,Structuremap" /> servicestack,structuremap,Redis,servicestack,Structuremap" />

如何使用Structuremap将自定义命名空间中的Redis设置为ServiceStack web应用程序上的缓存和MQ

如何使用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作为会话等的缓存,并运行我的消息队列

我的应用程序是一个ASP.net MVC网站以及基于ServiceStack的Json服务提供商。配置的最佳方式是什么

我希望能够将IMessageQueueClient传递到我的服务类和控制器中,以便将任务添加到队列中

我有点不知道该做什么。我的代码如下:

//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中使用的范围有何评论?是否正确/最佳?谢谢如果要使用同一个服务器实例,唯一真正的选择是使用不同的数据库。否则,您可以在客户机上创建并使用您自己的抽象,该客户机使用自定义前缀作为所有键的前缀,类似于您在这里提出的建议。