一、类型

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