@chenbinghua
2019-03-02T06:32:53.000000Z
字数 1124
阅读 623
redis
字符串(String)
字符串列表(list)
字符串集合(set)
有序字符串集合(sorted set)
哈希(hash)
1.常见的字符串操作
set key value
get key
setnx (set if not exists)
getrange key x y 返回key的value的值长度
append key value
2.如果字符串的内容是数值
incr key 在给定key的value上增加1(id生成器)
incrby key value 在给定key的value上增加value
decr key
decrby key value
3.string最常见的使用场景
存储json数据类型
set user:1 {id:1,name:xiaolong}
作为计数器
incr count;
incrby count 10;
优酷视频点赞
set vedio:100:goodcount 0
incr vedio:100:goodcount
decr vedio:100:goodcount
1.redis的List结构(想象成java中的list),是一个双象链表结构
2.list的常用操作
1,RPUSH:在一个list最后添加一个元素
RPUSH firends "stef"
2,LPUSH:在一个list最前面添加一个元素
LPUSH firends "stea"
3,LTRIM key start stop:剪裁一个列表,剩下的内容从start到stop;
LTRIM friends 0,3 =>只剩下前4个数据;
4,LRANGE key start stop:获取列表中的一部分数据,两个参数,第一个参数代表第一个获取元素的位置(0)开始,第二个值代表截止的元素位置,如果第二个参数为-1,截止到列表尾部;
LRANGE firends 0 -1
5,LLEN key: 返回一个列表当前长度
LLEND friends
6,LPOP:移除list中第一个元素,并返回这个元素
LPOP friends
7,RPOP:移除list中最后一个元素,并返回这个元素;
RPOP friends
3.使用场景
1.使用redis的list模拟队列,堆栈
2.朋友圈点赞
1.创建一条微博内容:set user:1:post:91 "hello redis" (用户ID为1,微博ID为91)
2.点赞:
lpush post:91:good 'friend1'
lpush post:91:good 'friend2'
lpush post:91:good 'friend3'
3.查看有多少人点赞: llen post:91:good
4.查看有多少人点赞: lrange post:91:good 0 -1
思考,如果用数据库实现这个功能,SQL会多复杂?