Redis数据类型
-
常见数据类型如下:(参考Http://redisdoc.com/)
- String/字符串
- Hash/哈希
- List/列表
- Set/集合
- Zset/sorted set有序集合
-
KEY的操作:(小写key代表键名,小写db代表数据库角标,小写second代表秒数)
- KEYS *:查看当前数据库的所有键值,若没有返回空(empty list or set)
- EXISTS key:存在key的值返回1,不存在返回0
- MOVE key db:移动key到其他数据库(db),key不存在返回0,数据库不存在报错(error) ERR index out of range
- EXPIRE key second:给制定key设置过期时间,key不存在则失败返回0
- TTL key:查看制定key的剩余时间(-2~正无穷大),永久返回-1,已过期返回-2
-
String/字符串的操作:单值单value
- SET key xxx/GET key/DEL key/APPEND key xxx/STRLEN key:设值(可覆盖),取值(不存在返回nil),删除(成功返回1失败返回0),追加(key存在返回其长度,不存在则相当于新增),求长度(不存在返回0)
- INCR key/DECR key/INCRBY key n/DECRBY key n:给指定key+1/-1/+n/-n(若不存在则新增key,且值为1或n)
- GETRANGE key m n/SETRANGE key n xxx:取指定key的[m,n]的值,从0开始,-1代表最后一位。-2代表倒数第二位/将指定key的值从第n为开始设置为xxx,会覆盖回追加
- SETEX key second xxx/ SETNX key xxx:(setex:set with expire)设置带过期时间的值(可覆盖可新增)/(setnx:set if not exist)先判断key是否存在,不存在时设值,存在失败返回0
- MSET key1 xxx key2 xxx key3 xxx …/MGET key1 key2 key 3 …/MSETNX key1 xxx key2 xxx key3 xxx… :设置多个key的值/取得多个key的值/设置多个key的值(全部不存在时才设置,否则返回0)
-
GETSET key xxx:先取值再设置值,若不不存在key则返回nil后设置值
-
List/列表:单值多value
- LPUSH key v1 v2 v3 …/rpush key v1 v2 v3 …/lrange key m n:从左往右添加/从右往左添加/从左往右取值,[m,n]
- LPOP key/RPOP key :从左边出一个值/从右边出一个值
- LINDEX key index:(lindex key index)通过索引获取列表中角标为index的元素
- LLEN key:获取指定key的长度
- LREM key value :再key中删N个值相同的value,不够则全删,返回删除的个数
- LTRIM key m n:截取指定范围[m,n]的值后再赋值给这个key,越界则截取[m,n]覆盖的值
- RPOPLPUSH key1 key2:移除key1列表的最后一个元素,并将该元素添加到另一个列表key2(不存在则新建),并返回
- LSET key index xxx:将xxx插如key中的index位置,若index越界则报错(error) ERR index out of range
- LINSERT key before/after xxx1 xxx2:将xxx2插入到xxx1的前面/后面,若xxx1不存在则插入失败返回-1
- 总结:List是一个字符串链表,left、right都可以插入添加;如果键不存在,创建新的链表;如果键已存在,新增内容;如果值全移除,对应的键也就消失了。链表的操作无论是头和尾效率都极高,但是对中间元素进行操作时,效率就很低了。
-
Hash/哈希:KV模式不变,但V是一个键值对
-
HSET hashname key xxx/HGET hashname key/HMSET hashname key1 xx1 key2 x2 …/HMGET hashname key1 key2 …/HGETALL hashname/HDEL hashname:
127.0.0.1:6379> HSET h1 k1 v1 (integer) 1 127.0.0.1:6379> HGET h1 k1 "v1" 127.0.0.1:6379> HMSET h1 k2 v2 k3 v3 k4 v4 OK 127.0.0.1:6379> HMGET h1 k1 k2 k3 k4 1) "v1" 2) "v2" 3) "v3" 4) "v4" 127.0.0.1:6379> HGETALL h1 1) "k1" 2) "v1" 3) "k2" 4) "v2" 5) "k3" 6) "v3" 7) "k4" 8) "v4" 127.0.0.1:6379> HDEL h1 k4 (integer) 1 127.0.0.1:6379> HGETALL h1 1) "k1" 2) "v1" 3) "k2" 4) "v2" 5) "k3" 6) "v3" 127.0.0.1:6379>
-
HLEN hashname:
127.0.0.1:6379> HGETALL h1 1) "k1" 2) "v1" 3) "k2" 4) "v2" 5) "k3" 6) "v3" 127.0.0.1:6379> HLEN h1 (integer) 3 127.0.0.1:6379>
-
HEXISTS hashname key:
127.0.0.1:6379> HEXISTS h1 k1 (integer) 1 127.0.0.1:6379> HEXISTS h1 k5 (integer) 0 127.0.0.1:6379> HEXISTS h2 k5
-