Redis(REmote DIctionary Server) 是一个遵守BSD协议、支持网络、可基于内存亦可持久化的日志型key-value存储系统。
KEY
常用指令:
指令
|
注释
|
备注
|
exits key
|
检测指定 key 是否存在
|
1 : 存在,0 : 不存在
|
del key1 key2......keyN
|
删除给定 key
|
返回删除 key 的数目,0 表示给定 key 都不存在
|
type key
|
返回给定 key 值的类型
|
none : key 不在 string : 字符类型
list : 链表类型 set : 无序集合类型
|
keys pattern
|
返回匹配指定模式的所有 key
|
|
randomkey
|
随机返回一个 key
|
如果当前数据库是空的,返回空串
|
rename oldkey newkey
|
重命名一个 key
|
如果 newkey 已存在,将会被覆盖newkey的值.
|
expire key seconds
|
设置key 的过期时间,单位是秒。
|
返回 1 : 成功,0 :key 不存在
|
ttl key
|
返回key的剩余过期秒数
|
-1 : key未设置过期时间, -2:key不存在
|
persist key
|
清除key的过期时间
|
1 : 成功 0:key不存在或者没有设置过期时间
|
VALUE
Redis 提供五种数据类型:String,Hash,List,Set 及 ZSet。
- String
String 是最基本的类型,而且 String 类型是二进制安全的,意思是 Redis 的 String 可以 包含任何数据。
常用指令:
指令
|
注释
|
例子
|
set key value
|
存数据
|
set username 'winn'
|
get key
|
取数据
|
get username
|
mset key1 value1... keyn valuen
|
一次存多个键值对
|
mset uname 'winn' pwd '123'
|
mget key1 ... keyn
|
一次取多个值
|
mget uname pwd
|
- Hash
Hash 是一个 String 类型的 field 和 value 的映射表,最大可以包含(2^32 -1)个键值对。增删操作的时间复杂度为 O(1)。
Hash 特别适合用于存储对象,将一个对象存储在 Hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。【省内存的原因是新建一个 Hash 对象时开始是用 zipmap(又称为 smallhash)来存储的。这个 zipmap 其实并不是hash table,但是 zipmap 相比正常的 hash 实现,可以节省不少 hash 本身需要的一些元数据存储开销。尽管 zipmap 的添加、删除、查找都是 O(n),但是由于一般对象的 field 数量都不太多,所以使用 zipmap的添加删除平均还是 O(1)。如果 field 或者 value的大小超出一定限制(在配置文件中指定)后,redis会在内部自动将zipmap替换成正常的hash实现.
#配置字段最多 64 个 hash-max-zipmap-entries 64 #配置 value 最大为 512 字节 hash-max-zipmap-value 512
常用指令:
指令
|
注释
|
例子
|
hmset key field1 value1 ... fieldn valuen
|
存数据
|
hmset user name 'winn' sex 'man'
|
hget key
|
取数据
|
hget user name
|
hgetall key
|
获取对象
|
|
HKEYSkey
|
夺取对象中的所有filed
|
|
HVALSkey
|
夺取对象中的所有value
|
|
- List(双向链表类型)
List 是一个链表结构,可以理解为一个每个子元素都是 String 类型的双向链表。主要功能是 push、pop、获取一个范围内的所有值等。
常用指令:
指令
|
注释
|
例子
|
lpush listName value
|
将value存入list的表头
|
lpush listData demo
|
rpush listName value
|
将value存入list的表尾
|
rpush listData demo
|
lrange listName startIndex endIndex
|
返回下标在[startIndex, endIndex]中的值
|
lrange listData 0 10
|
- Set
Set 是无序集合,且不允许重复的成员。最大可以包含(2^32 -1)个元素。增删查操作的时间复杂度为 O(1)。
Set 的是通过 hashtable 实现的, hashtable 会随着添加或者删除自动的调整大小。 需要注意的是调整 hashtable 大小时候需要同步(获取写锁),会阻塞其他读写操作。
关于 Set 集合类型 除了基本的添加删除操作,还包含集合的取并集(union),交集(intersection), 差集(difference)。
常用指令:
指令
|
注释
|
例子
|
sadd key member
|
将value存入set
|
sadd setData set demo
|
smembers key
|
返回key中的数据 |
members setData
|
SDIFF key1 [key2]
|
返回给定所有集合的差集
|
|
SINTER key1 [key2]
|
返回给定所有集合的交集
|
|
SUNION key1 [key2]
|
返回所有给定集合的并集
|
|
- ZSet(有序集合类型Sorted Set)
Sorted Set 是有序集合,且不允许重复的成员。它在 Set 的基础上增加了一个顺序属性(score),这一属性在添加修改元素的时候可以指定,每次指定后,会自动重新按新的值调整顺序。
常用指令:
指令
|
注释
|
例子
|
zadd key score member
|
存数据
|
zset zsetData 0 demo
|
zrange key startScore endScore [WITHSCORES]
|
取score在[startScore, endScore]之间的数据
|
zrange zsetData 0 10
|
补充
- 系统常用指令
指令
|
注释
|
备注
|
keys name
|
获取指定key
|
keys * 获取所有key
|
flushdb
|
清除当前数据库的所有数据
|
|
flushall
|
清除所有数据库的所有数据
|
|
besize
|
返回数据库中key的数量
|
|
config set field value | 设置系统参数 | config set maxmemory 100mb |
config get field | 查看系统参数 | config get maxmemory |
- 更多命令,请查看(全集)https://redis.io/commands