时间:2021-05-20
redis 是一个非关系型高性能的key-value数据库。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
下面介绍下,在C#中如何使用redis
1、引用 StackExchange.Redis
2、redis 工具类
public class RedisHelper { private static ConnectionMultiplexer multiplexer { get; set; } static RedisHelper() { } public static IDatabase GetDataBase(int dbNums = 1) { if (multiplexer == null) Init(); return multiplexer.GetDatabase(dbNums); } public static ConnectionMultiplexer GetMultiplexer() { if (multiplexer == null) Init(); return multiplexer; } public static bool IsConnect(string key, IDatabase redisDb, string module, string action) { if (!redisDb.IsConnected(key)) { LogHelper.Error("current redis is not connect", null, module, action); return false; } return true; } private static void Init() { try { var configString = ConfigurationManager.AppSettings["RedisConfigString"]; ConfigurationOptions options = ConfigurationOptions.Parse(configString); multiplexer = ConnectionMultiplexer.Connect(options); } catch (Exception ex) { LogHelper.Error(ex, "RedisHelper", "Static"); } } }3、常用操作
IDatabase _cacheClient = RedisHelper.GetDataBase(4);//key是否存在_cacheClient.KeyExists("key")//设置key-vaule_cacheClient.StringSet("key", "value");//设置过期时间_cacheClient.KeyExpire("key", TimeSpan.FromMinutes(1));//删除_cacheClient.KeyDelete("key");4、redis 虽然也可以做消息队列,实现也简单,但弊端同样明显,不推荐
//发布ConnectionMultiplexer multiplexer = RedisHelper.GetMultiplexer();ISubscriber sub = multiplexer.GetSubscriber();var queue = sub.Publish("channel name", "message");//订阅ConnectionMultiplexer multiplexer = RedisHelper.GetMultiplexer();ISubscriber sub = multiplexer.GetSubscriber();sub.Subscribe("channel name", (channel, message) =>{ //TODO});5、计数器,用于秒杀、抢购控库存
//取值,不存在则初始为0long num = _cacheClient.StringIncrement("key", 0)//判断,比如和缓存里的商品总库存比较//计数增加_cacheClient.StringIncrement("key", 2)以上就是C#中如何使用redis的详细内容,更多关于C#使用redis的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问JavaScript的已有变量?4.如何在C#中访问J
问:1.如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问JavaScript的已有变量?4.如何在C#中
ASP.NET中前台javascript与后台代码调用1如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问
C#代码与javaScript函数的相互调用问:1.如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问Ja
1.JavaScript访问C#函数2.JavaScript访问C#变量3.C#中访问JavaScript的已有变量4.如何在C#中访问JavaScript函数