Redis是一个开源的使用ANSI C 语言编写、支持网络、同memcache相比在Redis下可以实现基于内存亦可持久化的日志型、Key-Value 类型的NoSQL数据库,且在Redis中Key的类型也更为丰富。所以较为广泛的在生产环境中使用,在这里就说一说Redis中Key相关的常用指令。
首先,先要说明下在Redis下Key,Redis的key是字符串类型,但是key 中不能包括边界字符(“”),由于key 不是binary safe的字符串,所以像"my key"和"mykey\n"这样包含空格和换行的key 是不允许的,所以建议在使用的时候不要使你的Key的名字太过复杂。在redis下的Vaule提供五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及sorted set(有序集合)。
其中Redis的系统管理指令如下:
PING 如果redis服务器存活缺省返回PONG。
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 制造一次 redis 服务崩溃。
######以下为危险操作,在使用时都不会失败,请谨慎使用##########
FLUSHDB 删除当前数据库中所有 key。
FLUSHALL 删除全部数据库中所有 key。
Redis的常用对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存在,将会被覆盖,返回 1 表示成功,0失败。可能是oldkey 不存在或者和newkey相同。
renamenx oldkey newkey 同上,但是如果 newkey存在返回失败。
expire key seconds 为key指定过期时间,单位是秒。返回1成功,0表示key已经设置过过期时间或者不存在。
ttl key 返回设置过过期时间key的剩余过期秒数。-1表示key不存在或者未设置过期时间。
select db-index 通过索引选择数据库,默认连接的数据库是0,默认数据库数是16个。返回1表示成功,0失败。
move key db-index 将key从当前数据库移动到指定数据库。返回1表示成功。0表示 key不存在或者已经在指定数据库中。
因为Redis有5种不同类型的Key,所以在具体不同类型的Key使用是不一样的,以下就一一介绍:
一、string 类型
string是最基本的类型,而且string 类型是二进制安全的。意思是redis 的string 可以包含任何数据。比如jpg 图片或者序列化的对象。从内部实现来看其实string 可以看作byte数组,最大上限是1G 字节。
string 类型数据操作指令:
set key value 设置key对应string 类型的值,返回1表示成功,0失败。
setnx key value 如果 key不存在,设置key对应string类型的值。如果key已经存在,返回0。
get key 获取 key对应的 string值,如果 key不存在返回nil
getset key value 先获取key的值,再设置key的值。如果 key不存在返回nil。
mget key1 key2 ...... keyN 一次获取多个key的值,如果对应key不存在,则对应返回nil。
mset key1 value1 ...... keyN valueN 一次设置多个key的值,成功返回1表示所有的值都设置了,失败返回0 表示没有任何值被设置。
msetnx key1 value1 ...... keyN valueN 一次设置多个key的值,但是不会覆盖已经存在的 key
incr key 对 key 的值做++操作,并返回新的值。注意 incr一个不是 int 的 value 会返回错误,incr 一个不存在的key,则设置key 值为1。
decr key 对 key的值做--操作,decr一个不存在key,则设置 key值为-1。
incrby key integer 对 key 加上指定值 ,key 不存在时候会设置 key,并认为原来的value是0。
decrby key integer 对key减去指定值。decrby完全是为了可读性,我们完全可以通过incrby一个负值来实现同样效果,反之一样。
二、hash 类型