redis
2023-05-11 15:58:59 0 举报
AI智能生成
reids学习整理
作者其他创作
大纲/内容
常用数据结构
string
字符串操作
SET
SET key value
MSET
MSET key value [key value ...]
GET
GET key
MGET
MGET key [key...]
SETNX
SETNX key value
DEL
DEL key [key...]
EXPIRE
EXPIRE key seconds
原子加减
incr
incr key
incrby
incr key num
decr
decr key
decrby
decrby key num
应用场景
单值缓存
对象缓存
SET user:1 value(json格式数据)
MSET user:id:name zhangsan user:id:age 20
MGET user:id:name user:id:age
MGET user:id:name user:id:age
分布式锁
SET product:10001 true ex 10 nx
SETNX product:10001 true
计数器
INCR article:readcount:{文章id} GET article:readcount:{文章id}
分布式系统全局序列号
INCRBY orderId 1000
hash
常用操作
HSET
HSET key filed value
HMSET
HMSET key filed value [filed value ...]
HGET
HGET key filed
HMGET
HGET key field [field ...]
HDEL
HDEL key field [field ...]
HLEN
HLEN key
HGETALL
HGETALL key
HINCRBY
HINCRBY key filed num
应用场景
对象缓存
HMSET user 1:name zhangsan 1:age 18
HMGET user 1:name 1:age
HMGET user 1:name 1:age
电商购物车
1)以用户id为key
2)商品id为field
3)商品数量为value
2)商品id为field
3)商品数量为value
购物车操作
添加商品
hset cart:1001 10088 1
增加数量
hincrby cart:1001 10088 1
商品类型总数
hlen cart:1001
删除商品
hdel cart:1001 10088
获取购物车所有商品以及数量
hgetall cart:1001
优缺点
优点
同类数据归类整合储存,方便数据管理
相比string操作消耗内存与cpu更小
相比string储存更节省空间
缺点
过期功能不能使用在field上,只能用在key上
Redis集群架构下不适合大规模使用
数据量很大会造成bigkey,影响性能
list
常用操作
LPUSH
LPUSH key value [value ...]
RPUSH
RPUSH key value [value ...]
LPOP
LPOP key
RPOP
RPOP key
BLPOP
BLPOP key [key ...]
BRPOP
BRPOP key [key ...]
LRANGE
LRANGE key start stop
应用场景
栈
LPUSH + LPOP
队列
LPUSH + RPOP
阻塞队列
LPUSH + BRPOP
微博、微信公众号消息流
关注人数不多把用户id当作key 消息id当做element
展示消息到公众号直接LRANGE 最近几条比较方便
展示消息到公众号直接LRANGE 最近几条比较方便
set
常用操作
SADD
SADD key member [member ...]
SREM
SREM key member [member ...]
SMEMBERS
SMEMBERS key
SCARD
SCARD key
SISMEMBER
SISMEMBER key member
SRANDMEMBER
SRANDMEMBER key [count]
SPOP
SPOP key [count]
运算操作
SINTER
SINTER key [key ...]
SINTERSTORE
SINTERSTORE destination key [key ..]
SUNION
SUNION key [key ..]
SUNIONSTORE
SUNIONSTORE destination key [key ...]
SDIFF
SDIFF key [key ...]
SDIFFSTORE
SDIFFSTORE destination key [key ...]
应用场景
微信抽奖
SADD key {userlD}
SMEMBERS key
SRANDMEMBER key [count]
SPOP key [count]
微信微博点赞,收藏,标签
点赞
取消点赞
检查用户是否点过赞
获取点赞的用户列表
获取点赞用户数
集合操作
关注模型
共同关注的人
可能认识的人
电商商品筛选
zset
常用操作
ZADD
ZADD key score member [[score member]…]
ZREM
ZREM key member [member …]
ZSCORE
ZSCORE key member
ZINCRBY
ZINCRBY key increment member
ZCARD
ZCARD key
ZRANGE
ZRANGE key start stop [WITHSCORES]
ZREVRANGE
ZREVRANGE key start stop [WITHSCORES]
ZUNIONSTORE
ZUNIONSTORE destkey numkeys key [key ...]
ZINTERSTORE
ZINTERSTORE destkey numkeys key [key …]
应用场景
实现排行榜
点击新闻
展示当日排行前十
七日搜索榜单计算
展示七日排行前十
其他高级命令
keys
keys *
scan
SCAN cursor [MATCH pattern] [COUNT count]
Info
Server 服务器运行的环境参数
Clients 客户端相关信息
Memory 服务器运行内存统计数据
Persistence 持久化信息
Stats 通用统计数据
Replication 主从复制相关信息
CPU CPU 使用情况
Cluster 集群信息
KeySpace 键值对统计数量信息
持久化
RDB
配置文件
save 60 1000
命令
save
bgsave
优点
速度快
体积小
AOF(append-only file)
配置文件
开启AOF
appendonly yes
appendfsync always:每次有新命令追加到 AOF 文件时就执行一次 fsync ,非常慢,也非常安全
appendfsync everysec:每秒 fsync 一次,足够快,并且在故障时只会丢失 1 秒钟的数据。
appendfsync no:从不 fsync ,将数据交给操作系统来处理。更快,也更不安全的选择
AOF重写
auto-aof-rewrite-min-size 64mb
auto-aof-rewrite-percentage 100
优点
安全性比RDB高
Redis 4.0 混合持久化
配置文件开启(必须先开启aof)
aof-use-rdb-preamble yes
Redis数据备份策略
写crontab定时调度脚本,每小时都copy一份rdb或aof的备份到一个目录中去,仅仅保留最近48小时的备份
每天都保留一份当日的数据备份到一个目录中去,可以保留最近1个月的备份
每次copy备份的时候,都把太旧的备份给删了
每天晚上将当前机器上的备份复制一份到其他机器上,以防机器损坏
分支主题
收藏
0 条评论
下一页