一、Redis数据类型
Redis并不是简单的key-value键值对。redis还支持很多数据类型,key,string,list,set,sorted set,hash
String:redis最基本类型。一个key对应一个value。redis的string可以包含任何数据。比如jpg图片或者序列化的对象。一个Redis的字符串最多可以有512M。
hash:类似Java中的map。是一个string类型的field和value的映射表Map<String,Object>
list:底层实际是一个链表。左右都可以加入。键不存在,创建新的链表。键已存在,新增内容。值全部移除,对应的键也消失。从头、尾效率都极高。若对中间元素操作,很慢。
set:是String类型的无序集合。是通过hashtable实现的。
sorted set:有序集合。每一个元素都关联了一个double类型的分数。
二、操作数据
1.key
-
keys *
:查看所有的key -
set key value
:加入key-value。已有则覆盖 -
exists key
:是否存在key -
move key number
:将key移动到number数据库中 -
ttl
:查看key还能在内存中活多久。-1永不过期,-2已过期 -
expire key second
为给定的key设置过期时间second -
del key
:删除key -
type key
:查看数据类型 -
append key value
:在key的数据中追加value -
incr/decr key
:+1/-1(只有数字才可以) -
incrby/decrky key value
:+value/-value -
getrange key index1 index2
:获取指定闭区间的值。k1:“1234556”。getrange k1 0 -1显示所有
getrange k1 0 3 显示1234
-
setrange key index value
:从第index开是替换为value。长度不变 -
setex key second value(set with expire)
:设置键加上时间 -
setnx key value(set if not exist)
:如果不存在,设置 -
mset key1 value1 key2 value2 key3 value3
:设置多个值 -
msetnx key1 value1 key2 value2 key3 value3
:设置多个值。只要有一个存在,所有都不能加入 -
mget key1 key2 key3
:获得多个值
2.list
当值多value
-
lpush key value1 value2 value3
:左加入list名为key,值为value1、value2、value3 -
rpush key value1 value2 value3
:右加入list名为key,值为value1、value2、value3。怎么进入怎么出去
-
lrange key index1 index2
:输出 -
lpop key
:将key list左出栈 -
rpop key
:将key list右出栈 -
lindex list index
:在list中左index位置的值。index从0开始 -
rindex list index
:在list中右index位置的值。index从0开始 -
llen key
:list长度 -
lrem key N value
删N个value -
ltrim key index1 index2
:将list中index1到index2的部分截取出来赋值给key -
rpoplpush list1 list2
:将list1底部的值左加入list2,只有一个 -
lset key index value
:将list的index设置为value -
linsert key before/after value1 value2
:在list的value1值得前面/后面加入value2
3.set
不可以重复。跟list差不多
sadd key value1 value2 ...
:加入一个setsmembers key
:查看set的值sismember key value
:查看key中是否有value值scard key
:获取集合元素个数srem key value
:删除set中值为value的元素srandmember set number
:随机出number个整数spop key
:随机出栈smove key1 key2 value
:将key1中的value移动给key2sdiff key1 key2
:差集。在第一个set中,不在第二个set中sinter key1 key2
:交集。在第一个set中,并在第二个set中sunion key1 key2
:并集。在第一个set中,在第二个set中
4.hash
相当于Map<String,Map<String,Object>>
hset key key1 value1
:为key中加入key1 value1键值对hegt key key1
:获取key中的id为key1的值hmset key key1 value1 key2 value2
:设置更多的值hmget key key1 key2 key3
:获取多个值hgetall key
:获取所有的值。输出key1hdel key key1
:删除key中的key1hlen key
:查看key的长度hexists key key1
:判断key中的key1是否存在hkeys key
:获取所有keyhvals key
:获取所有valuehincrby key key1 number
:为key1加numberhincrbyfloat key key1 float
:为key1加floathsetnx key key1 value
:不存在就加入
5.zset(sorted set)
有序集合
zadd key key1 value1 key2 value2 key3 value3
:加入有序key1zrange key index index2
:查询key中index 到 index2中的值zrange key index index2 withscores
:带分数的zrangebyscore key score score2
:分数在score到score2之间的值zrangebyscore key score (score2
:分数在score到score2之间的值,不包含score2zrangebyscore key score score2 limit index length
:分数在score到score2之间的值,分页zrem zsetkey value
:删除zsetkey中的值为value的元素zcard zsetkey
:统计个数zcount zsetkey score1 score2
:统计在score1到score2之间的分数个数zrank zsetkey value
:获取value值的索引zscore zsetkey value
:获取value值得scorezrevrank zsetkey value
:逆序索引zrevrange zsetkey index1 index2
:获取逆序索引下的value值zrevrangebyscore zsetkey index2 index1
:逆序分数在index2到index1间的值。index2>index1