Redian新闻
>
Redis 可别只会用缓存!这 16 种妙用让同事直呼牛X

Redis 可别只会用缓存!这 16 种妙用让同事直呼牛X

公众号新闻

https://blog.csdn.net/qq_39938758/article/details/105577370

1、缓存


String类型
例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。


2、数据共享分布式


String 类型,因为 Redis 是分布式的独立服务,可以在多个应用之间共享
例如:分布式Session
<dependency> 

 <groupId>org.springframework.session</groupId> 

 <artifactId>spring-session-data-redis</artifactId> 

</dependency>


3、分布式锁


String 类型setnx方法,只有不存在时才能添加成功,返回true
public static boolean getLock(String key) {

    Long flag = jedis.setnx(key, "1");

    if (flag == 1) {

        jedis.expire(key, 10);

    }

    return flag == 1;

}




public static void releaseLock(String key) {

    jedis.del(key);

}


4、全局ID


int类型,incrby,利用原子性
incrby userid 1000
分库分表的场景,一次性拿一段


5、计数器


int类型,incr方法
例如:文章的阅读量、微博点赞数、允许一定的延迟,先写入Redis再定时同步到数据库


6、限流


int类型,incr方法
以访问者的ip和其他信息作为key,访问一次增加一次计数,超过次数则返回false


7、位统计


String类型的bitcount(1.6.6的bitmap数据结构介绍)
字符是以8位二进制存储的
set k1 a

setbit k1 6 1

setbit k1 7 0

get k1 

/* 6 7 代表的a的二进制位的修改

a 对应的ASCII码是97,转换为二进制数据是01100001

b 对应的ASCII码是98,转换为二进制数据是01100010




因为bit非常节省空间(1 MB=8388608 bit),可以用来做大数据量的统计。

*/
例如:在线用户统计,留存用户统计
setbit onlineusers 01 

setbit onlineusers 11 

setbit onlineusers 20
支持按位与、按位或等等操作
BITOPANDdestkeykey[key...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。       

BITOPORdestkeykey[key...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。 

BITOPXORdestkeykey[key...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。 

BITOPNOTdestkeykey ,对给定 key 求逻辑非,并将结果保存到 destkey 。
计算出7天都在线的用户
BITOP "AND" "7_days_both_online_users" "day_1_online_users" "day_2_online_users" ...  "day_7_online_users"


8、购物车


String 或hash。所有String可以做的hash都可以做
图片
  • key:用户id;field:商品id;value:商品数量。
  • +1:hincr。-1:hdecr。删除:hdel。全选:hgetall。商品数:hlen。


9、用户消息时间线timeline


list,双向链表,直接作为timeline就好了。插入有序


10、消息队列


List提供了两个阻塞的弹出操作:blpop/brpop,可以设置超时时间
  • blpop:blpop key1 timeout 移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  • brpop:brpop key1 timeout 移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
上面的操作。其实就是java的阻塞队列。学习的东西越多。学习成本越低
  • 队列:先进先除:rpush blpop,左头右尾,右边进入队列,左边出队列
  • 栈:先进后出:rpush brpop


11、抽奖


自带一个随机获得值
spop myset


12、点赞、签到、打卡


图片
假如上面的微博ID是t1001,用户ID是u3001
用 like:t1001 来维护 t1001 这条微博的所有点赞用户
  • 点赞了这条微博:sadd like:t1001 u3001
  • 取消点赞:srem like:t1001 u3001
  • 是否点赞:sismember like:t1001 u3001
  • 点赞的所有用户:smembers like:t1001
  • 点赞数:scard like:t1001
是不是比数据库简单多了。


13、商品标签


图片
老规矩,用 tags:i5001 来维护商品所有的标签。
  • sadd tags:i5001 画面清晰细腻
  • sadd tags:i5001 真彩清晰显示屏
  • sadd tags:i5001 流程至极


14、商品筛选


// 获取差集

sdiff set1 set2

// 获取交集(intersection )

sinter set1 set2

// 获取并集

sunion set1 set2
图片
假如:iPhone11 上市了
sadd brand:apple iPhone11




sadd brand:ios iPhone11




sad screensize:6.0-6.24 iPhone11




sad screentype:lcd iPhone 11
赛选商品,苹果的、ios的、屏幕在6.0-6.24之间的,屏幕材质是LCD屏幕
sinter brand:apple brand:ios screensize:6.0-6.24 screentype:lcd


15、用户关注、推荐模型


follow 关注 fans 粉丝
相互关注:
  • sadd 1:follow 2
  • sadd 2:fans 1
  • sadd 1:fans 2
  • sadd 2:follow 1
我关注的人也关注了他(取交集):
  • sinter 1:follow 2:fans
可能认识的人:
  • 用户1可能认识的人(差集):sdiff 2:follow 1:follow
  • 用户2可能认识的人:sdiff 1:follow 2:follow


16、排行榜


id 为6001 的新闻点击数加1:
zincrby hotNews:20190926 1 n6001
获取今天点击最多的15条:
zrevrange hotNews:20190926 0 15 withscores
图片
Redis 用的好,加薪少不了

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604241

Linux技术交流群:3762708

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
百菜不如白菜,原来它还有这种妙用!鸡蛋别只会水煮!学会这几招,连吃1周不重样开春这样穿,想不让同事“哇塞”都难!柿话柿说,柿柿留心(9)柿甜酸橙人生的血脉之河一直在流淌什么都嗑只会害了你?不会!只会让我营养均衡!紧急﹗核电站大泄漏﹐距离安省仅600公里﹗官员还说不用让公众知道?三维声技术在赛事直播中的应用,TWS耳机中音频技术落地实践,通话降噪算法落地应用及挑战那些被照片留住的早晨想到要让同事做妇科检查,我去急诊前坚持洗了澡、喷了香水……如何写出一手让同事膜拜的漂亮代码?全网最全!2023澳网赛事直播收看指南和精彩看点!笑喷!翘课让同学帮忙签到,结果被老外老师做成PPT......第一次见女朋友的闺蜜,如何高情商相处?别只会尬笑了…世界杯决赛来了!看高科技如何加持移动端赛事直播夸人还只会用beautiful?教你用17个形容词,把人夸出花来~比《狂飙》更刺激!我给张译最新悬疑剧做了一页PPT,同事直言头皮发麻……按压肚脐眼,虽然很简单,却是一招妙用无穷的长寿奇术!Redis缓存的主要异常及解决方案让老板看呆,同事用这个函数一键搞定排序,太牛X了!For Gen-Z, Entrepreneurship Represents a Ticket to Freedom太好笑了...翘课让同学帮忙签到被外教做成PPT,有些教授是真的皮!团|早春第一件外套非它莫属!同事直呼太好看了!太暖了!是什么神仙鞋子让同事三四双抢着买?!扎心!研一还不会用pubMed查文献?我差点被导师公开处刑了......别只会 SpringMVC 了!Spring 又官宣了一个更牛逼的替代框架!游吉萨金字塔,猜古埃及之谜柿话柿说,柿柿留心(10)柿出有因住过“方舱”的同事直接把这台消毒机搬回家了!MySQL 数据同步到 Redis 缓存, so Easy !81岁老人被困暴风雪7天6夜奇迹生存!靠吃面包和雪水生存!1个月搞定国自然标书?这样写标书效率太高!师兄直呼牛逼!(附模板)太好笑了!翘课让同学帮忙签到被外教做成PPT,有些教授是真的皮....“小心”别只会说“Be careful”啦,快快改过来!只会用 xxl-job?更强大的新一代分布式任务调度框架来了!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。