redis五种(字符串、hash、list、set、zset)数据结构API使用介绍
1、字符串:API使用
del key:O(1),删除以key为键的数据,并将值一并删除,删除成功返回删除条数,反之返回0,
可同时删除多个键值对:格式:del key1 key2 key3...删除成功返回删除条数,反之返回0。
get key:O(1),获取以key为键的值,键存在则返回值,不存在返回null(nil)。
set key value:设置key值为value,无论key是否存在都设置key的值为value,O(1)。
decr/incr key:key自减/加一,O(1)。
decrby/incrby key number:key减/加number值,O(1)。
key不存在将自行创建,key存在且值数字的话,将报错:(error) ERR value is not an integer or out of range。
setnx key value:设置key值为value,当key不存在的情况下才设置key的值为value,O(1)。
set key value xx::设置key值为value,当key存在的情况下才设置key的值为value(重置key中的value值),O(1)。
mset key1 value1 key2 value2 key3 value3:批量设置key的值。O(n)。
mget key1 key2 key3.....:批量获取key的值O(n)。
getset key value:给key设置新的值,并返回旧的值,O(1)
append key value:给key的值的后面加上valueO(1)
strlen key:计算key中value的值的字节长度,(注意中文占两个字节)O(1)
incrbyfloat key value:给key的值自增value(浮点类型)O(1)
getrange key range1 range2:获取key的值中下标range1-range2之间的值,(下标从0开始算起)O(1)
setrange key range value:设置key的值中下标为range值为value,(下标从0开始算起)O(1)
2、hash(哈希)
hget key value:获取key中对应field的属性的value值。O(1)
hset key field value:设置key中对应field的属性为value值。O(1)
hdel key field:删除key中对应field的属性和所对应的value值。O(1)
hmget key field1 field2 field3....:获取多个key中对应的属性的value值。O(n)
hmset key field1 value1 field2 value2 field3 value3....:设置多个key中对应的field属性的value值。O(n)
hexists key field:判断key中对应的field属性是否存在,O(1)
hlen key:获取key中属性的数量,内存已经优化好计算出数量,不需要每次都重新计算。O(1)keys
hgetall key:获取所有key中对应field的属性和value值。O(n)
hvals key:返回key中对应的所有field对应的value的值。O(n)
hkeys key:返回key中对应的所有的field。O(n)
hsetnx key field value:设置key中field对应的数值值为value,如果field存在则设置失败。O(1)
hincrby key field intCount value:设置key中field增加value值。O(1)
hincrbyfloat key field floatCount:设置key中field增加value个浮点数。O(1)
3、list(列表)
rpush key value1 value2 value3.....:从列表的右边开始插入数据,先插入value1到value2到valueN。O(1~n)
lpush key value1 value2 value3....:从列表的左侧开始插入数据,先插入value1到value2到valueN。O(1~n)
linsert key before|after value newValue:在value(第一个出现的值,value值不存在则插入失败返回-1)值之前/之后(选择其中的before/after)插入新数据newValue值
lpop key:从列表key中左侧弹出一个值,返回弹出值。
rpop key:从列表key中右侧弹出一个值,返回弹出值。
lrem key count value:根据count值删除列表中值为value的数值,返回删除个数。O(n)
count>0,从左到右,删除最多count个value相等的值
count<0,从右到左,删除最多count的绝对值个value相等的值
count=0,删除所有value相等的值
ltrim key start end:删除除了start-end之间的值,下标从0开始算起,O(n)
lrange key start end:获取索引值为start-end之间的值,左边算起开始为0,右边算起开始为-1,O(n)
lindex key index:获取下标值为index的值,O(n)
llen key:计算list中的数值长度,在列表内部已经存储了列表的长度不用重新计算长度,O(1)
lset key index newValue :设置列表下标为index的值为newValue,O(n)
blpop key timeout:lpop的阻塞版本,timeout为阻塞超时时间,timeout=0为永远不阻塞,O(1)
brpop key timeout:rpop的阻塞版本,timeout为阻塞超时时间,timeout=0为永远不阻塞,O(1)
实现功能(可参考实现方式):
LPUSH + LPOP = Stack:栈
LPUSH + RPOP = Queue:队列
LPUSH + LTRIM = capped Collection:有限列表
LPUSH + BRPOP = Message Queue:消息队列
4、set(无序集合)
sadd key element1 element2 element3...... :向集合key中谈添加element(集合中存在element,则添加失败)。O(1)
srem key element1 element2 element3......:删除集合key中的element,。O(1)
scard key:计算key中的元素个数。O(1)
sismember key member:判断member是否为集合key中的元素
srandmember key count :随机取出集合key找那个的count个元素。
smembers:获取集合中所有的元素。
spop:从集合中随机弹出一个元素,即删除。O(1)
sdiff key1 key2:算出key1和key2之间的差集,返回key1的值。
sinter key1 key2:算出key和key2之间的交集(共有的)。
sunion:算出key1和key2的并集,差集+交集=并集
sdiff|sinter|sunion + store destkey....将差集、交集、并集结果保存在destkey中(保存之后不需要重新计算,节省内存计算,第二次获取的时候直接在destkey中获取)。
用法:sdiffstore dest key1 key2,将存在key1中的元素不存在key2中的元素存储到dest集合中。
sinterstore dest key1 key2,将存在key1中的元素和存在key2中的元素存储到dest集合中。
sunionstore dest key1 key2,将存在key1中的元素和key2中的元素存储到dest集合中(重复的元素只存储一次)。
5、zset(有序集合)
zadd key score element:(score可重复且为数字,element不可重复),添加score和element到集合中。O(logN)
zrem key element1 element2....:删除集合中的元素,O(1)
zscore key element:返回元素的分数,O(1)
zincrby key incrScore element: 增加或减少元素的分数,incrScore代表分数,O(1)
zcard key: 返回集合中的元素个数,O(1)
zrange key start end [WITHSCORES]:返回指定索引范围内的升序元素【选项WITHSCORES为是否将分数打印,可选项】。O(log(n)+m),n=有序集合的元素个数,m=打印范围内的元素个数
zrangebyscore key minScore maxScore[WITHSCORES]:返回指定分数内(包含两个数值minScore、maxScore)的元素,O(log(n)+m),n=有序集合的元素个数,m=打印范围内的元素个数
zcount key minScore maxScore:返回有序集合内在指定分数内的个数,O(log(n)+m),n=有序集合的元素个数,m=打印范围内的元素个数
zremrangebyrank key start end:删除指定排名内的升序元素,O(log(n)+m),n=有序集合的元素个数,m=打印范围内的元素个数
zremrangebyscore key minScore maxScore:删除指定分数内(包含两个数值minScore、maxScore)的升序元素,O(log(n)+m),n=有序集合的元素个数,m=打印范围内的元素个数
zrevrank:
zrevrange:
zrevrangebyscore:
zinterstore:
zunionstore: