3. Redis-数据类型和指令

3.1 redis 系统管理相关指令

DBSIZE 返回当前数据库 key 的数量
INFO 返回当前 redis 服务器状态和一些统计信息
MONITOR 实时监听并返回redis服务器接收到的所有请求信息
SHUTDOWN 把数据同步保存到磁盘上,并关闭redis服务
CONFIG GET parameter 获取一个 redis 配置参数信息。(个别参数可能无法获取)
CONFIG SET parameter value 设置一个 redis 配置参数信息。(个别参数可能无法获取)
CONFIG RESETSTAT 重置 INFO 命令的统计信息。(重置包括:Keyspace 命中数、Keyspace 错误数、 处理命令数,接收连接数、过期 key 数)
DEBUG OBJECT key 获取一个 key 的调试信息
DEBUG SEGFAULT 制造一次服务器当机
FLUSHDB 删除当前数据库中所有 key,此方法不会失败。小心慎用
FLUSHALL 删除全部数据库中所有 key,此方法不会失败。小心慎用

 

3.2 redis 数据类型

3.2.1 String类型

set name aaa 设置值 key name ,value aaa
get name 获取值
del name 删除值
setnx name bbb 设置值 key name ,value bbb,如果name这个键已经存在值,就不设置
setex color 10 red 设置值 key color,value red,有效期十秒,10秒之后返回nil
setrange name 2 bbb 替换name的值,从下标为2开始替换成bbb 
mset k1 v1 k2 v2 k3 v3 设置多个值 k1=v1,k2=v2,k3=v3
mget name k1 k2 k3  同时获取多个值
getset name ccc 获取就值,同时设置新值
incr age 自增age + 1
incrby age 3 自增age + 3
decr age 自减age - 1
decrby age 10 自减age - 10
strlen name 获取字符串长度
append name aaa 在name的值后面追加内容aaa

演示:set name aaa,get name,del name,setnx name bbb,setex color 10 red

演示:setrange name 2 bbb

演示:mset k1 v1 k2 v2 k3 v3 , mget name k1 k2 k3 

演示:getset name ccc

演示:incr age,incrby age 3

演示:decr age ,decrby age 10

演示:

 

3.2.2 Hash类型

Hash类型是String类型的 field 和value 的映射表,或者说一个String集合。他特别适合存储对象,相比较而言,将一个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存取整一个对象。

hash 有点像 json 对象。下面用json格式展示

hset user id 1 设置hash user={id:1}
hget user id

获取 user.id 的值

hmset user id 2 name sen age 26 设置hash user={id:2, name:'sen', age:'26'}
hmget user id name age 获取值 user.id, user.name, user.age
hsetnx user id 3 设置hash user={id:3},但是如果 user.id 有值就不赋值
hexists user id 查看 key 是否存在,存在返回1 ,否则返回0
hlen user 返回 key 的数量
hkeys user 获取所有的key
hvals user 获取所有的value
hgetall user 获取所有的 key和value

演示:hset user id 1,hget user id,hmset user id 2 name sen age 26,hmget user id name age

演示:hexists user id,hlen user,hkeys user,hvals user

演示:hgetall user

 

3.2.3 List 类型

List 类型是一个链表结构的集合,其主要功能有 push,pop,获取元素等。更详细的说,List类型是一个双端链表的结构。可以通过相关的操作进行集合头部或者尾部添加删除元素,list 的设计非常简单精巧,即可以作为栈,又可以作为队列。满足绝大的需求。

lpush list1 left1 在list1中头部插入元素“left1”
rpush list1 right2 在list1中尾部插入元素“right1”
lrange list1 0 -1 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
linsert list1 before right1 right0 在 list1中,在right1前插入right0
lset list1 2 center 把下标为2的元素改成 center
lrem list1 2 left2 删除第2在left2元素
ltrim list1 1 4 保留下标1到4的元素
lpop list1 从头部删除并返回元素
rpop list1 从尾部删除并返回元素
rpoplpush list1 list2 把list1尾部的元素加到list2的头部
lindex list1 1 获取 index 为1 的元素
llen list1 获取 list1 的长度

演示:lpush list1 left1,rpush list1 right2,lrange list1 0 -1

演示:linsert list1 before right1 right0,lset list1 2 center

演示:lrem list1 2 left2

演示:ltrim list1 1 4,lpop list1,rpop list1

演示:rpoplpush list1 list2,lindex list1 1,llen list1

 

3.2.4 Set 类型

sadd set1 aaa 添加一个元素
srem set1 aaa 删除元素
smembers set1 查看 set1 所有元素
spop 随机删除一个元素smembers set1
sdiff set1 set2 返回两个集合不同的元素
sdiffstore set3 set1 set2 返回set1,set2集合不同的元素,放到set3中
sinter set1 set2

取set1,set2集合的交集

sinterstore set4 set1 set2 取set1,set2集合的交集,放入set4中
sunion set1 set2 取set1,set2集合的并集
sunionstore set5 set1 set2 取set1,set2集合的并集,放入set5中
smove set1 set2 bbb 从set1把bbb移到set2中
scard set1 返回set1的元素个数
sismember set1 bbb 判断bbb是不是set1中的元素
srandmember set1 随机返回一个元素,但是不会删除

演示:sadd set1 aaa,srem set1 aaa,smembers set1

演示:spop set1 

演示:sdiff set1 set2

演示:sdiffstore set3 set1 set2

演示:sinter set1 set2,sinterstore set4 set1 set2

演示:sunion set1 set2,sunionstore set5 set1 set2

演示:smove set1 set2 bbb,scard set1,sismember set1 bbb,srandmember set1

 

3.2.5 ZSet 类型

zadd zset1 1 aaa zset集合中,添加元素aaa,序号为1
zrange zset1 0 -1 查看元素,用法参考lrange
zrange zset1 0 -1 withscores 查看元素,带序号
zrem zset1 aaa 在zset1删除aaa
zincrby zset1 10 ddd zset1集合,ddd元素序号+10
zrangebyscore zset1 1 15 取出zset1集合中序号为1-15的元素
zcard zset1 元素个数
zount zset1 1 5 序号为1-5之间的元素个数
zremrangebyscore zset1 5 10 删除序号5-10之间的元素
zremrangebyrank zset1 0 5 删除索引0-5之间的元素
   
   

演示:zadd zset1 1 aaa,zrange zset1 0 -1,zrange zset1 0 -1 withscores,zrem zset1 aaa

演示:zincrby zset1 10 ddd,zrangebyscore zset1 1 15

演示:zremrangebyscore zset1 5 10

 

 

3.3 redis 其他常用命令

keys *:返回所有满足的 keys * (可以模糊匹配)

exists:判断某个key是否存在

expire:设置某个key的过期时间,使用ttl查看剩余时间。

persist:取消过期时间

select:选择数据库 数据库为0-15,默认进入的是0。

move:将当前数据库的key转移到指定的数据库中。

randomkey:随机返回数据库里的一个key

rename:重命名key