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 <br>MGET user:id:name user:id:age<br>
分布式锁
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<br>HMGET user 1:name 1:age<br>
电商购物车
1)以用户id为key<br>2)商品id为field<br>3)商品数量为value<br>
购物车操作
添加商品
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<br>展示消息到公众号直接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 服务器运行的环境参数 <br>
Clients 客户端相关信息
Memory 服务器运行内存统计数据 <br>
Persistence 持久化信息 <br>
Stats 通用统计数据 <br>
Replication 主从复制相关信息 <br>
CPU CPU 使用情况
Cluster 集群信息 <br>
KeySpace 键值对统计数量信息
持久化
RDB
配置文件
save 60 1000
命令
save
bgsave
优点
速度快
体积小
AOF(append-only file)
配置文件
开启AOF
appendonly yes
appendfsync always:每次有新命令追加到 AOF 文件时就执行一次 fsync ,非常慢,也非常安全<br>
appendfsync everysec:每秒 fsync 一次,足够快,并且在故障时只会丢失 1 秒钟的数据。
appendfsync no:从不 fsync ,将数据交给操作系统来处理。更快,也更不安全的选择
AOF重写
auto-aof-rewrite-min-size 64mb <br>
auto-aof-rewrite-percentage 100
优点
安全性比RDB高
Redis 4.0 混合持久化
配置文件开启(必须先开启aof)
aof-use-rdb-preamble yes
Redis数据备份策略
写crontab定时调度脚本,每小时都copy一份rdb或aof的备份到一个目录中去,仅仅保留最近48小时的备份
每天都保留一份当日的数据备份到一个目录中去,可以保留最近1个月的备份
每次copy备份的时候,都把太旧的备份给删了
每天晚上将当前机器上的备份复制一份到其他机器上,以防机器损坏
分支主题
收藏
0 条评论
下一页