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就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


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

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