加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 建站 > 正文

关于Redis的n种妙用,不仅仅是缓存

发布时间:2019-06-25 22:28:42 所属栏目:建站 来源:IT界的小柠檬
导读:副标题#e# redis是键值对的数据库,常用的五种数据类型为字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset)。 Redis用作缓存,主要两个用途:高性能,高并发,因为内存天然支持高并发。 应用场景 分布式锁

MicSub->{seven,james,qing,jack,tom}

  1. # 返回sevenSub和qingSub的交集,即seven和青山的共同关注 
  2. sinter sevenSub qingSub -> {mic,james} 
  3. # 我关注的人也关注他,下面例子中我是seven 
  4. # qing在micSub中返回1,否则返回0 
  5. sismember micSub qing 
  6. sismember jamesSub qing 
  7. # 我可能认识的人,下面例子中我是seven 
  8. # 求qingSub和sevenSub的差集,并存在sevenMayKnow集合中 
  9. sdiffstore sevenMayKnow qingSub sevenSub -> {seven,jack} 

电商商品筛选(set)

关于Redis的n种妙用,不仅仅是缓存(附有自学资料分享哦)

每个商品入库的时候即会建立他的静态标签列表如,品牌,尺寸,处理器,内存

  1. # 将拯救者y700P-001和ThinkPad-T480这两个元素放到集合brand::lenovo 
  2. sadd brand::lenovo 拯救者y700P-001 ThinkPad-T480 
  3. sadd screenSize::15.6 拯救者y700P-001 机械革命Z2AIR 
  4. sadd processor::i7 拯救者y700P-001 机械革命X8TIPlus 
  5. # 获取品牌为联想,屏幕尺寸为15.6,并且处理器为i7的电脑品牌(sinter为获取集合的交集) 
  6. sinter brand::lenovo screenSize::15.6 processor::i7 -> 拯救者y700P-001 

排行版(zset)

redis的zset天生是用来做排行榜的、好友列表, 去重, 历史记录等业务需求

关于Redis的n种妙用,不仅仅是缓存(附有自学资料分享哦)

  1. # user1的用户分数为 10 
  2. zadd ranking 10 user1 
  3. zadd ranking 20 user2 
  4. # 取分数最高的3个用户 
  5. zrevrange ranking 0 2 withscores 
过期策略

定期删除

redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。

定期删除策略

Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。

从过期字典中随机 20 个 key;

删除这 20 个 key 中已经过期的 key;

如果过期的 key 比率超过 1/4,那就重复步骤 1;

惰性删除

除了定期遍历之外,它还会使用惰性策略来删除过期的 key,所谓惰性策略就是在客户端访问这个 key 的时候,redis 对 key 的过期时间进行检查,如果过期了就立即删除,不会给你返回任何东西。

定期删除是集中处理,惰性删除是零散处理。

为什么要采用定期删除+惰性删除2种策略呢?

如果过期就删除。假设redis里放了10万个key,都设置了过期时间,你每隔几百毫秒,就检查10万个key,那redis基本上就死了,cpu负载会很高的,消耗在你的检查过期key上了

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读