慕课网-一站式学习Redis从入门到高可用分布式实践-第2章-API的理解和使用-字符串
字符串
1.结构和命令
字符串键值结构,value最大可以512MB,但是不建议这么大,大概 100KB就可以了

使用场景
1)缓存
2)计数器
3)分布式锁
4)......
命令
1)get
获取key对应的value
get key
o(1)
2)set
设置key-value
set key value
o(1)
3)del
删除key-value
del key
o(1)
set hello world get hello del hello get hello
4)incr
key自增1,如果key不存在,自增后get(key)=1
incr key
o(1)
5)decr
key自减1,如果key不存在,自增后get(key)=-1
decr key
o(1)
6)incrby
key自增1,如果key不存在,自增后get(key)=k
incrby key k
o(1)
7)decrby
key自减1,如果key不存在,自减后get(key)=k
decrby key k
o(1)
get counter incr counter get counter incrby counter 99 decr counter get counter
8)set
不管key是否存在,都设置
set key value
o(1)
9)setnx
key不存在,才设置
setnx key value
o(1)
10)set xx
key存在,才设置
set key value xx
o(1)
exists php set php good setnx php bad set php best xx get php exists java setnx java best set java easy xx get java exists lua set lua hehe xx
11)mget
批量获取key,原子操作
mget key1 key2 key3 ...
o(n)
12)mset
批量设置key-value
mset key1 key2 key3 ...
o(n)
mset hello world java best php good mget hello java php


13)getset
set key new value并返回旧的value
getset key newvalue
o(1)
14)append
将value追加到旧的value
append key value
o(1)
15)strlen
返回字符串的长度(注意中文)
strlen key
o(1)
set hello world getset hello php append hello ",java" get hello strlen hello set hello "足球" strlen hello
16)incrbyfloat
增加key对应的值3.5
incrbyfloat key 3.5
o(1)
17)getrange
获取字符串指定下标所有的值
getrange key start end
o(1)
18)setrange
设置指定下标所有对应的值
setrange key index value
o(1)
incr counter incrbyfloat counter 1.1 get counter set hello javabest getrange hello 0 2 setrange hello 4 p get hello
2.快速实战
#记录网站每个用户个人主页的访问量?
#incr userid:pageview #单线程:无竞争
#缓存视频的基本信息(数据源在 MySQL中)伪代码
public VideoInfo get(long id) {
String redisKey = redisPrefix + id;
VideoInfo videoInfo = redis.get(redisKey);
if (videoInfo == null) {
videoInfo = mysql.get(id);
if (videoInfo != null) {
//序列化
redis.set(redisKey, serialize(videoInfo))
}
}
return videoInfo;
}
#分布式id生成器
#incr id
3.字符串总结

posted on 2019-11-13 12:47 herisson_pan 阅读(16) 评论(0) 收藏 举报
浙公网安备 33010602011771号