.Net下Redis使用注意事项
.Net下Redis使用注意事项
注:Redis的安装方法和桌面端工具很多,不在本文讨论范围内。
一:不结合适用场景的技术都是耍流氓,Redis主要适用场景:
简单字符串缓存
简单队列
简单发布订阅
简单计数器
排行榜
简单字符串悲观锁
简单事务的乐观锁
精准计算过期时间
Uniq 操作,排重
注:由于类似的讲解太多了,这里只列出场景标题,具体小伙伴可以查询,使用前切记场景合适,对症下药,否则可能事倍功半。
二:Redis 目前在公司主要用于以下几点:
1:用户信息缓存(简单字符串缓存)
2:部分操作加锁(简单字符串悲观锁)
4:一些固定信息的缓存(简单字符串缓存)
5:红包雨的部分操作(简单计数器)
6:标的抢购(简单计数器)
三:所以以下的结论都是基于以上的业务场景:
Redis的插件很多ServiceStack.Redis和StackExchange.Redis 等,刚开始太年轻 使用了 ServiceStack.Redis, 新版收费,免费版限制并发10000 左右,后期改为StackExchange.Redis,内部基于StackExchange.Redis封装了方法,地址:https://github.com/Aresyl/LY.Redis.git 感兴趣的可以看下。
1:如果使用“简单字符串缓存”方法对象序列化不要用Newtonjson和Json.Net 建议使用ProtoBuf 或者StackExchange.Redis自带方法。
2:使用redis队列 Value大小可以达到1GB,但是为了排序等性能最好不要超过1MB,有序队列记得删掉末尾数据(看过一次,具体是1MB 还是3MB 记不清了,也没找到,不过有序队列记得删末尾就对了)。
3:高频小字段进行缓存,保证50%的命中率才值得(读写比1:1 还用Redis干啥,直接数据库就好了)。
4:任何数据缓存一定要有过期时间(过期后再从数据库中获取重新赋值),监控缓存内存使用情况。
5:简单字符串缓存、简单计数器、精准计算过期时间、数据保存等操作记得同步数据库,别真把Redis 当成数据库用。
6:Redis 服务器内存要足够大。