千家信息网

redis的用法有哪些

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了redis的用法有哪些,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。1. 高并发缓存/共享session:UserInf
千家信息网最后更新 2025年11月07日redis的用法有哪些

这篇文章主要介绍了redis的用法有哪些,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

1. 高并发缓存/共享session:

UserInfo getUserInfo (long id) {}

取:

userRedisKey = "user:info:" + id;

value = redis.get(userRedisKey );

if (value != null) {

userInfo = deserialize(value);

return userInfo;

}

存:

userInfo = ***getUserInfo(id);

redis.setex(userRedisKey, 3600, serialize(userInfo));

用string存储序列化后的数据,不够立体直观,可以转为hmset存储为哈希结构,存取更直观

2. 简单分布式锁

setnx只有不存在时能设置成功,其余只能等待。单线程

3. 计数器 incr,因为是单线程,比cas等少了cpu消耗,性能更高

long incrVideoCounter (long id) {

key = "video:playCount:" + id;

return redis.incr(key);

}

4. 实现栈/队列

栈: lpush + lpop

队列: lpush + rpop

5. 流量控制/限速

phoneNum = "12345678999";

key = "shortMsg:limit:" + phoneNum;

isExists = redis.set(key, 1, "EX 60", "NX");

if (isExists != null || redis.incr(key) <= 5) {

//通过

} else {

//不通过

}

6. 消息队列

使用lpush + brpop可实现阻塞队列,生产者从列表左端lpush插入元素,多个消费者从右端brpop阻塞获取队列尾部元素

7. 每个用户有自己的文章,现在要分页展示文章列表

hmset article:1 title xx context XXXX

lpush user:1:articles srticle:1 articles:3

articles = lrange user:1:articles 0 9

for article in {articles}

hgetall {article}

8. 关注点赞等

点赞: zincrby user:ranking:2016_03_15 mike 1

取消: zrem user:ranking:2016_03_15 mike

取得赞最多的10个用户: zrevrangebyrank user:ranking:2016_03_15 0 9

展示用户信息及分数: hgetall user:info:tom / zscore user:ranking:2016_03_15 mike / zrank user:ranking:2016_03_15 mike

9. bitmaps 计算大数据集合见的关系等

10. 排行榜

mike上传了一个视频并获得了3个赞 zadd user:ranking:2016_03_15 mike 3

又有人给点了个赞 zincrby user:ranking:2016_03_15 mike 1

11. 共同关注

给用户添加关注标签 sadd user:1:tags tag1 tag2

给标签添加用户 sadd tag1:uses user:1

共同关注 sinter user:1:tags user:2:tags

sinter/sunion/sdiff

12. 发布订阅

subscribe video:changes:

publish video:changeds "video1,video2"

for video in video1,video2

update (video)

每种数据type对应了多种底层数据结构实现(object encoding),可以通过数据大小长度场景等切换,达到更高的效率

持久化RDB(子进程创建,二进制文件,恢复快,不够实时)/AOF(appendonly。文本文件,实时写操作先aop_buffer,然后通过配置写入磁盘间隔,写入磁盘,达到一定大小合并)

批量hmget等操作要转为hscan等渐进式遍历方法,否则容易阻塞

缓冲:客户端缓冲(输入/输出),复制积压缓冲,aof缓冲

复制: 全量/增量 复制偏移量/复制积压缓冲(写命令发送给从服务器同时还维护一个先进先出的队列,等于主服务还保存着最近传播的命令)/ID

sentinal: 实现高可用,本身是特殊的redis节点,可以自己配置集群,通过心跳等机制监控redis数据集群,当某一节点出现故障不可用,可以及时发现并自动迁移

cluster: 分布式集群,容错选主等。将物理结点映射到16383个槽位实现动态性

感谢你能够认真阅读完这篇文章,希望小编分享redis的用法有哪些内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

数据 队列 用户 缓冲 篇文章 集群 阻塞 直观 不够 元素 分布式 同时 命令 大小 实时 文件 文章 方法 标签 磁盘 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中专对口升学分数线网络技术 手淘网络技术有限公司薪资 南通海门区城北幼儿园网络安全 顺义区智能网络技术价格行情 linux服务器 双网卡 安丘软件开发入门教程哪里好 小米软件开发上班真实感受视频 股票软件开发需要什么配置 电子商务网络安全有哪些 手机版方舟服务器咋刷物品 广西公安网络技术岗 污水处理厂网络安全要求 大学学生网络安全教育座谈会 服务云分布式数据库 cdt软件开发 保密和网络安全自查 南通云网络技术口碑推荐 计算机网络技术学哪方面的 c动态数据库连接 唐山linux软件开发 网络安全目标主要有哪些 西哈努克城做软件开发 省级数字家庭管理平台服务器地址 软件开发一般分为几个阶段 如何保存导出身份证数据库 为什么无法新建服务器 数据库工具箱一键查旺旺 康海时代串口服务器安装 初中网络安全教育画报 战地1不用等待进去就开的服务器
0