Redis---学习笔记(更新中)
2024-09-01 00:02:35
一.基本命令
#查看所有键
keys * #查看指定键
keys key #查看模糊键
keys ke*
keys ke?
keys ke[a-z]
keys ke\? #判断键是否存在
exists key #查看键类型
type key #清空所有
flushall
二.数据类型相关命令
1.字符串:key尽量用【对象类型:属性:值】的规则命名
# 增/改
set key
mset k1 k2 k3 # 删
del key
del k1 k2 k3 # 查
get key
mget k1 k2 k3 # 统计
strlen key # 加1
incr key # 加n
incr key n # 增加内容(key不存在会创建)
append key xxx
2.散列:由键 字段 值 组成
# 增:把一条用户信息保存为散列数据
hset user name Tom
hset user age 20 # 改:名字存错了,重新存
hset user name Haha # 查:查看结果
hget user name # 检查name字段是否存在:如果user中没有name,上一步会报错
hexists usr name # 忘记user中还有哪些字段?
hkeys user
hvals user # 删掉user中的age
hdel user age # 删掉整个user
del user # 在加一条数据,但是之前的增加数据太麻烦了?
hmset user name tom age 20 # 查看数据
hmget user name age # 上面的查看数据还是太麻烦?
hgetall user # 年纪加10岁
hincrby user age 10
3.列表:双向链表,适合快进快出
# 增
lpush number 1 2 3 4 5 # 查
lrange number 0 -1 #从第一个索引查询到最后一个索引
lindex number 0 # 查询指定索引的值 # 改
lset number 0 9 # 把列表中的索引为0的值改成9
linsert number before 9 111 # 在9的前面插入111
linsert number after 9 222 # 在9的后面插入222 # 删
lpop number
rpop number
lrem number count value
ltrim number0 9 # 把source列表的最后一个元素添加到dest列表的左边
rpoplpush source dest # 统计
llen number
4.集合
# 增/改
sadd myset h j k # 查
smembers myset # 删
spop myset
del myset # 统计
scard myset # 随机取一个
srandmenber myset # 交集
sinter set1 set2 # 并集
sunion set1 set2 # 差集
sdiff set1 set2
sdiffstore storeset set1 set2
5.有序集合
# 增/改
zadd userscore 100 h1 200 h2 50 h3 30 h4 70 h5
zadd userscore 120 h6 # 查
zrange userscore 0 -1
zscore userscore h1 zrange userscore 0 3 # 按照分数从小到大排序返回索引 0-3 中的元素
zrange userscore 0 3 withscores zrangebyscore userscore 10 50 # 按照分数从小到大排序返回分数为 10-50 中的元素
zrangebyscore userscore 10 50 withscores
zrangebyscore userscore 10 50 withscores limit 1 3 zrevrange # 用于倒序
zrevrangebyscore # 用于倒序 # 删
zrem userscore h1 h2
zremrangebyrank userscore 1 2 # 删除排名1到2的元素 #统计
zcard userscore
zcount userscore 10 20 统计指定范围分数内的元素个数 #加减分
zincrby usrscore -50 h1
三.事务
multi
...
exec
四.生存时间
# 只有set操作会影响生存时间
# 设置过期时间
set name tom
expire name 10
expireat name 时间戳 # 剩余过期时间
ttl name # 毫秒级
pexpire name 3000
pexpireat name 毫秒时间戳
如何限制redis的最大内存使用和删除策略
五.排序
sort命令
六.消息通知
1.队列:
好处:松耦合,易扩展
实现:
# 伪代码
lpush tasks t1 loop
task = rpop tasks
if task
exec task
else
wait 1 second
优先级实现:
/**
* 伪代码
* brpop 是一个会阻塞的命令,可以接受多个键 最后一个参数表示超时时间,0则不超时
* 如果三个任务键都没有数据,程序会一直阻塞,一旦其中有一个键有数据,程序就会执行,此特性可以实现优先级。那个任务要优先执行,就推送一下,程序就会立刻执行那个任务
*/
lpush one_tasks t1
lpush two_tasks t2
lpush three_tasks t3 loop
task = brpop one_tasks two_tasks three_tasks 0
exec task
2.发布/订阅:
# redis实例---发布
publish channel.a hihihi #redis实例---订阅
subscribe channel.a
七.管道
八.管理(持久化 主从 管理工具 安全)
最新文章
- FFT 快速傅里叶变换浅析
- 利用Github Pages生成一个快速访问的网址,展示自己的项目
- highCharts的多图导出
- 有关segue的简介
- 一句话概括下spring框架及spring cloud框架主要组件
- destoon 深度整合discuz x2 UC 之免邮箱二次验证
- poj 3469
- netty实现消息转发服务
- android JNI处理图片的例子
- 如何判断img标签是否有src属性
- 关于Html5发展和应用前景
- java验证码生成
- python数据可视化
- npm run dev 报错 run `npm audit fix` to fix them, or `npm audit` for details
- [转] webpack3最新版本配置研究(五) devtool,webpack-dev-server,CommonsChunkPlugin
- yii中通过HTTP post接收
- windows 同时启动多个Tomcat 控制台日志(startup.bat)输出到指定文件中
- 关于bfs时间轴
- [LeetCode] 数学计算模拟类问题:加法,除法和幂,注意越界问题。题 剑指Offer,Pow(x, n) ,Divide Two Integers
- Problem C: 深入浅出学算法004-求多个数的最小公倍数