一、类型
String : 字符类型
应用场景
session 共享
常规计数:微博数,粉丝数,订阅、礼物
set a 1 #单行插入
set a 2 #多次插入是修改
mset a 1 b 2 c 3 #多行插入
计数器
incr num #每执行一次命令数字+1
get num
incrby num 10000 #数字增加1W
decrby num 10000 #数字减少1W
Hash: 字典类型
应用场景:
存储部分变更的数据,如用户信息等。
最接近mysql表结构的一种类型
主要是可以做数据库缓存。
hmset ==>hset #新版本已经在弃用hmset
hmset stu id 100 name zhangsan age 20 gender m #存数据 stu代表是key(一般是mysql常用查询条件的值) id 代表第一列
hmset stu101 name zhangsan age 20 gender m #第二个相同查询条件换成stu101 代表id=101的值。
hmset stu101 name wang age 10 #修改就是直接在同一个key上面用hmset
del stu #删除stu
HMGET stu id name age gender #取数据 stu代表是key id代表要取第一列的值
hgetall a #加载a里面所有的值。
##模拟导mysql的数据方式
数据库内执行
mysql -e 'select concat("hmset sbtest_",id," id ",id," k ",k," c ",c) from test.sbtest1;'>/data/sbtest1.hmset
导入redis
cat /data/sbtest1.hmset | redis-cli -a 123456 &>/dev/null
List: 列表
应用场景
消息队列系统
比如sina微博
在Redis中我们的最新微博ID使用了常驻缓存,这是一直更新的。
但是做了限制不能超过5000个ID,因此获取ID的函数会一直询问Redis。
只有在start/count参数超出了这个范围的时候,才需要去访问数据库。
系统不会像传统方式那样“刷新”缓存,Redis实例中的信息永远是一致的。
SQL数据库(或是硬盘上的其他类型数据库)只是在用户需要获取“很远”的数据
时才会被触发,
而主页或第一个评论页是不会麻烦到硬盘上的数据库了。
lpush cs "1 2 3 4 5 6" #给key cs这个列表里面插入1 2 3 4 5 6 这行
lpush cs "a b c d e f" #给cs 这个列表插入第一列。(后插入的放到第一列)
rpush cs "10" #添加到尾部
lpop 、rpop:分别为删除头部和尾部,返回被删除的元素
ltrim cs 1 2 #保留第一行和第二行数据其他的都删除
lrem cs 2 2 #删除第二行
lset cs 1 a #第一行修改为 a
lrange cs 0 0 #查看cs 列表的第一行数据
lrange cs 1 2 #查看cs 列表的第二行数据和第三行
lrange cs -2 -1 #查看cs 倒数第二行和倒数第一行
lrange cs -1 -1 #查看cs 倒数第一行
Set: 集合
应用场景:
案例:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有
粉丝存在一个集合。
Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同
关注、共同喜好、二度好友等功能,
对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是
存集到一个新的集合中。
sadd set 1 2 3 4 5 a b c #插入set 集合
sadd get 10 11 12 13 14 15 a b c #插入get集合
srem set 1 2 #删除set 中的1 2 参数
sismember set 1 #判断1是否在集合中
sunion set get #求并集
sinter set get #求交集
sdiff set get #求左外集
Sorted set: 有序集合
应用场景:
排行榜应用,取TOP N操作
这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条
件为权重,比如按顶的次数排序,
这时候就需要我们的sorted set出马了,将你要排序的值设置成sorted set
的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令
即可。
zadd top a 0 b 0 c 0 d #插入 a b c d的值到有序列表初始值为1
zrem #移除
zincrby top 40 d #给d 值加 40
zrevrange top 0 1 #查看 前两名
zrevrange top 0 1 withscores #查看前两名及其所获得的数据。
发布订阅
发布(多次发布订阅方可以接收)
PUBLISH cs "ni xiaogou"
订阅(保持连接可以接收订阅)
subscribe cs
二、key的通用操作
KEYS * keys a keys a* 查看已存在所有键的名字
TYPE a 返回键所存储值的类型
EXPIRE\ PEXPIRE a 100 以秒\毫秒设定生存时间
TTL\ PTTL a 以秒\毫秒为单位返回生存时间
PERSIST a 取消生存时间设置
DEL 删除一个key
EXISTS 检查是否存在(不存在返回0、存在返回1)
RENAME 变更KEY名
bgsave 写入rdb