redis 相关note

一、Redis键(key):基本语法: command key_name

set keyname value
del key被删除 key 的数量。
exists key
name 若 key 存在返回 1 ,否则返回 0 。
expire keyname second 为 key 设置过期时间(单位秒)。
move key
name db 将当前数据库的key移动到给定的数据库db当中;移动成功返回1,失败则返回0;两个数据库有相同的key,move失败。
keys pattern 查找所有符合给定模式pattern的key
persist keyname 移除key的过期时间。
ttl key
name 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
randomkey 随机返回该db中任一key(不会删除key)。
rename keyname newkeyname 修改key的名称,
1.当key存在且new
key不存在,newkey 取代key。
2.当key不存在,返回错误。
3.new
key 已存在,key值也存在,原有key会被移除,new_key的值被key的值替换。
type key 返回 key 所储存的值的类型, 返回 key 的数据类型有:
none (key不存在) string (字符串) list (列表) set (集合) zset (有序集) hash (哈希表)

二、redis字符串(String)

set keyname value 用于设置给定key的值。如果key已经存储其他值,SET就覆写旧值,且无视类型。
get key
name 用于获取指定key的值。如果key不存在,返回nil。如果key储存的值不是字符串类型,返回一个错误。
getrange keyname start end 获取存储在指定key中字符串的子字符串。字符串的截取范围由start和end两个偏移量决定(包括start和end在内)。start=0且end=-1返回整个value。
getset key
name value 设置指定key的值,返回给定key的旧值。当key没有旧值时,即key不存在时,返回nil(相当于set key value操作),当key存在但不是字符串类型时,返回一个错误。
mget keyname1 keyname2... 返回所有(一个或多个)给定key的值。如果给定的key里面,有某个key不存在,那么这个key返回特殊值nil 。
setex keyname second value 为指定的key设置过期时间和值,若key已存在,将替换旧值。
setnx key
name value 当key不存在时,为key设置指定的值;当key已存在,返回0,覆盖失败。
strlen keyname 返回字符串的长度,当key不存在时,返回0,当key不是字符串类型时,返回错误。
mset key
name value ...keynamen valuen 设置一个or多个键值对。
metnx key
name1 value1 ... keynamen valuen 为一个或多个key设置值,当所有key都成功设置,返回1 。如果所有给定key都设置失败(至少有一个key已经存在),那么返回0。mset是原子性操作,具有原子性,要么都成功要么都失败。
incr(decr) key
name 将 key 中储存的数字值增(减)一。数字值在Redis中以字符串的形式保存。
如果key不存在,那么key的值会先被初始化为0,然后再执行INCR(decr) 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 incrby(decrby)keyname addvalue 将key中储存的数字加上(减去)指定的增量值(addvalue可为负数)。
如果key不存在,那么key 的值会先被初始化为0,然后再执行INCRBY(decrby)命令。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 append key
name new_value 为指定的key追加值,返回key中字符串的长度。
如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值的末尾。 如果key不存在,APPEND就简单地将给定key设为value,就像执行SET key value一样。

三、redis哈希(hash)

hdel keyname field1.. fieldn 删除hash表key中一个或多个指定字段,若指定字段不存在,则被忽略。返回成功删除字段的数量。
hexists key
name field value 查看哈希表的指定字段是否存在,若存在字段返回1,否则返回0。
hget keyname filed 返回哈希表中指定字段的值。若给定的字段或 key不存在时,返回nil。
hgetall key
name 用于返回hash表中所有的字段和值,若key不存在,返回空列表。 在返回里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。
hkeys keyname 返回哈希表中所有域(field)列表。 当key不存在时,返回一个空列表。
hlen key
name 用于获取hash表中字段的数量。key不存在时返回0。
hmget keyname field1..fieldn 用于返回hash表中一个or多个指定字段的值,若给定的字段不存在,返回nil,表值的排列顺序和指定字段的请求顺序一样。
hmset key
name field1 value1.. fieldn valuen 用于同时将多个field-value设置到hash中。
此命令会覆盖哈希表中已存在的字段。 如果哈希表不存在,会创建一个空哈希表,并执行HMSET操作。 hset keyname field value 用于为hash表中的字段赋值,
如果哈希表不存在,一个新的哈希表被创建并进行HSET操作。 如果字段已经存在于哈希表中,旧值将被覆盖。 hvals key
name 返回哈希表所有域(field)的值。
当key不存在时,返回一个空表。

四、redis列表(list)

bl(r)pop list1.. listn timeout 移动并获取列表的第一个(最后一个)元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
若列表不为空,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key,第二个元素是被弹出元素的值。 lindex keyname indexposition 通过下表获取列表中的元素,posotion可为负数,-1表示最后一个元素,-2表示倒数第二个元素,以此类推,0表示第一个元素。1表示第二个元素。如可以不存在或指定索引值不在列表的区间范围内,返回nil。
linsert keyname before/after existingvalue new value
在列表元素的前或后插入元素,当指定元素不存在时,返回-1(不执行任何操作),当列表不存在时,返回0(不执行操作)。 llen keyname 返回列表的长度,若key不存在,返回0。
lpop key
name 移除并返回列表的第一个元素。若key不存在,返回nil。
lpush keyname value1..valuen 将一个或多个值插入列表头部,插入多个元素时在列表中以插入顺序的倒序排列。若key不存在会新建列表并插入元素。
lpushx key
name value 将一个值插入到已存在列表的头部,若列表不存在,操作无效。
lrange keyname start end 返回列表中指定区间内的元素,区间以偏移量START和END指定。其中0表示列表的第一个元素,1表示列表的第二个元素,以此类推。你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
lrem key
name count value 根据参数COUNT的值,移除列表中与参数VALUE相等的元素。
COUNT的值可以是以下几种:
count>0 : 从表头开始向表尾搜索,移除与VALUE相等的元素,数量为COUNT。 count<0 : 从表尾开始向表头搜索,移除与VALUE相等的元素,数量为COUNT的绝对值。 count=0 : 移除表中所有与 VALUE 相等的值。 lset keyname index value 通过索引来设置元素的值,当索引参数超出范围,或对一个空列表进行LSET 时,返回一个错误。
ltrim key
name start end 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
下标0表示列表的第一个元素,以1表示列表的第二个元素,以此类推。你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。

五、redis集合(set),set是String类型的无序集合,集合的成员是唯一的。

sadd keyname value1.. valuen 将一个或多个成员加入到集合中,已经存在于集合的元素将被忽略;若key不存在,则新建集合并添加成员。
scard key
name 返回集合中元素的数量,若keyname不存在,返回0。
sismember key
name value 判断元素是否在集合内,存在返回1,若key不存在或元素不在集合内返回0。
smembers 命令返回集合中的所有的成员。 不存在的集合key被视为空集合。
spop keyname count 用于移除并返回集合中count个随机元素。
count不能小于0.
srandmember key
name count 用于获取集合中 count个随机元素。
如果count为正数,且小于集合基数,那么命令返回一个包含count个元素的数组,数组中的元素各不相同。如果count大于等于集合基数,那么返回整个集合。 如果count为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count的绝对值。 srem keyname value1.. valuen 用于移除集合中一个或多个元素,不存在的元素将被忽略,keyname不存在,返回0。

六、redis有序集合(sorted set) 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 zadd keyname score member 命令用于将一个或多个成员元素及其分数值加入到有序集当中。 如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。 分数值可以是整数值或双精度浮点数。 如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。 zcard keyname 用于返回集合中元素的数量,key不存在返回0.
zcount keyname start end 用于返回有序集合中指定分数区间的成员数量,keyname不存在返回0。
zincrby key_name increment member 对有序集合中指定成员的分数加上增量increment。可以通过传递一个负数值increment,让分数减去相应的值,比如ZINCRBY key -5 member,就是让member的score值减去5。
当key不存在,或分数不是key的成员时,ZINCRBY key increment member 等同于ZADD key increment member。