字符串类型
常用api
实战
1 计数器
记录网站每个用户个人主页的访问量
incr userid:pageview
redis天然适合做计数器,因为它是单线程的,所以在并发执行 incr时,不会存在竞争问题。
2 缓存视频
缓存视频的基本信息(数据源在mysql中)
-
缓存命中: 1 -> 2 -> 3.1
-
缓存未命中: 1 -> 2 -> 3.2 ->4 -> 5
伪代码:
public VideoInfo get(long id) {
String redisKey = redisPrefix + id;
VideoInfo videoInfo = redis.get(redisKey);
if(videoInfo == null) {
// 3.2
videoInfo = mysql.get(id);
if(videoInfo != null) {
// 4
redis.set(redisKey, videoInfo)
}
}
// 3.1 或 5
return videoInfo;
}
3 分布式ID
分布式ID生成器(三个Java服务并发的去生成id,但要求id不能重复)
可以通过redis的 incr 命令来实现, 因为它是原子操作
incr id
set setnx setxx
setnx: 新增操作setxx:更新操作
其实这些命令都是 set命令的变形
mget mset
getset append strlen
incrbyfloat getrange setrange
字符串总结
Hash
键值对的内部结构
{
"user:1:info" : {
"name" : "Ronaldo",
"age" : "40",
"Date" : "201",
"viewCounter" : "50"
}
}
重要的命令
所有Hash的命令都是以
h开头
hget hset hdel
hexists hlen
hmget hmset
hgetall hvals hkeys
hsetnx hincrby hincrbyfloat
哈希总结
列表list
列表数据结构
- 有序
- 可重复
增
rpush
lpush
linsert
删
lpop
rpop
lrem
ltrim
查
lrange
lindex
llen
改
lset
阻塞操作
集合set
集合结构
- 无序
- 不可重复
- 集合间的操作
常用API
said srem
scard dismember srandmember smembers
sdiff sinter sunion
实战
like❤️ 赞👍 踩👎
共同关注好友
有序集合 sorted set
有序集合结构
集合 VS 有序集合
主要API
有序集合都是以z开头的命令
zadd
zrem
zscore
zincrby
zcard
zrange
zrangebyscore
zcount
zremrangebyrank
z remove range by rank