keys *:查看所有数据;
exists key:查看key是否存在;
move key db:将指定键的值移动到指定的库中;
示例:move k1 1 将键为k1的数据移动到1号库中;
expire key:指定key的过期时间,单位值秒;
ttl key:查看key还有多长时间过期,-1表示永不过期,-2表示已过期;
type key:查看key的数据类型;
a)string是Redis中最基本的数据类型,一个key对应一个value;
b)string类型是二进制安全的,即redis的string可以包含任何类型的数据,例如图片,序列化的对象;
c)string类型的value最多可以存储512M;
set key value:设置键值;
get key:根据键获取值;
del key:删除键值;
append key str:在key的值后面追加上str;
strlen key:查看字符串长度;
incr key:将key的值加1,注:值必须是数字;
decr key:将key的值减1,注:值必须是数字;
incrby key num:将key的值加num,注:值必须是数字;
decrby key num:将key的值减num,注:值必须是数字;
getrange key beginIndex endIndex:获取键值索引值为beginIndex到endIndex之间的字符串;
setrange key offset value:在key的offset位置处插入value;
setex key seconds value(set with expire):设置key的过期时间,value是key的值
setnx key value(set if not exist):设置键值,当该key不存在时才设置,如果存在,则不设置;
mset key1 value1 [key2 value2 key3 value3 ...]:一次设置多个key value;
mget key1 [key2 key3 ...]:一次获取多个key的value;
msetnx key1 value1 [key2 value2 key3 value3 ...]:一次设置多个key value,当添加的所有key都不存在时,设置成功,如果有一个key已经存在,则都不设置;
getset key value:先获取key的值,在设置key的值为value;
a)Redis的List是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
b)List的底层实际是个链表。
lpush key value1 [value2 value3 ...]:从list头部(左边)添加一个元素;
示例:lpush list01 1 2 3 4 5 存储的结果是54321
rpush key value1 [value2 value3 ...]:从list尾部(右边)添加一个元素;
示例:rpush list02 1 2 3 4 5 存储的结果是12345
lrange key start stop:获取key值start到stop的元素;
获取全部元素:lrange key 0 -1
lpop key:从头部(左边)出栈,出栈后该数据在list中就不存在了;
rpop key:从尾部(右边)出栈,出栈后该数据在list中就不存在了;
lindex index:获取list中下标为index位置的元素;
llen key:获取list的长度;
lrem key count value:删除count个value;
示例:lpush list 1 1 1 2 2 2 3 3 3 4 5 6
lrem list 2 3 删除list中2个值为3的元素;
ltrim key start stop:截取掉list中下标从start到stop的元素,保存剩余的;
rpoplpush source destination:把source中的尾部元素放在destination的头部;
lset key index value:将list中下标为index位置上的元素设置为value;
lInsertkey key before/after pivot value:在list中第一个值为pivot元素的前面或者后面添加value元素;
list是一个字符串链表,left、right都可以插入元素;
如果键不存在,创建新的链表;
如果键已经存在,新增内容;
如果值全部移除,对应的键也就不存在了;
链表的操作无论是头和尾的效率都非常高,但假如是对中间元素进行操作,操作效率就非常低了。
Redis的Set是string类型的无序集合。它是通过HashTable实现的。
sadd key member1 [member2 member3 ...]:添加set集合;当有重复的元素,不添加;
smembers key:获取key中所有的元素;
sismembe key member:查看在key中是否有member元素;
scardr key:获取key集合中的元素个数;
srem key member1 [member2 ...]:删除key集合中的指定元素;
srandmember key [count]:随机获取key集合中的元素,默认获取1个,可以指定获取的个数;
spop key:随机出栈;
smove key1 key2 member:将key1集合中的member元素移动操key2集合中;
并集、交集、差集
sdiff key1 key2:差集,在第1个set中而不在第2个set中的元素;
sinter key1 key2:交集;
sunion key1 key2:并集;
a)Redis hash是一个键值对集合,是一个String类型的field和value的映射表,hash特别适合用与存储对象;
b)类似Java里面的Map
hset key field value:往map集合中添加一个元素;
示例:hset user id 10001
hget key field:获取map集合中field元素的值;
示例:hget user id
hmset key field1 value1 [field2 value2 field3 value3 ... ]:往map集合中添加多个元素;
hmget key field1 [field2 field3 ...]:获取map和中多个field元素的值;
hgetall key:获取map集合中的所有元素值;
hdel key field1 [field2 field3 ...]:删除map集合中的多个元素;
hlen key:获取map集合元素的个数;
hexists key field:map集合中是否存在field元素;
hkeys keys:获取map集合中所有key的名字;
hvals keys:获取map集合中所有的value值;
hincrby key field increment:把map集合中field元素的值加increment,注:该元素的值必须是数字;
hincrbyfloat key field increment:同上,不过加的是小数;
hsetnx key field value:往map集合中添加元素,当该元素不存在时添加,存在时不添加;
a)Redis的Zset和set一样也是string类型元素的集合,且不允许重复的成员。
b)不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序,Zset成员是唯一的,但分数(score)却可以重复。
c)形象的描述:Zset在set的基础上,加一个score值,之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2;
zadd key score1 member1 [score2 member2 ...]:添加;
示例:zadd zset01 10 v1 20 v2
zrange key start stop [withscores]:获取;
示例:zrange zset01 0 -1 [withscores]
zrangebyscore key min max [withscores] [limit offset count]:获取集合中score值在min到max之间的元素,limit关键字可以将获取的元素再进行分页显示,offset是开始元素,count是显示个数;
示例:zrangebyscore zset 10 20 获取10<=score>=20的元素;
zrangebyscore zset (10 20 获取10
=20 的元素;
注:( 是不包含的意思;
zrangebyscore zset 10 20 limit 0 2 获取10
=20 的元素,从第1个元素开始显示,显示2个;
zrem key member [member ...]:删除集合中的一个或多个元素;
zcard key:获取集合中元素的个数;
zcount key min max:获取集合中score值在min到max之间的元素;
zrank key member:获取集合中member元素的下标值;
zscore key member:获取集合中member元素的score值;
zrevrank key member:逆序获取集合中member元素的下标值;
zrevrange key start stop [withscores]:逆序获取集合中的元素;
zrevrangebyscore key max min [withscores] [limit offset count]:同zrangebyscore,但是逆序获取元素;