Redis 五大数据类型及常用API
五大数据类型简介
String(字符串)
-
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
-
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
-
string类型是Redis最基本的数据类型,一个redisl中 字符串value最多可以是512M .
Hash(哈希)
-
Redis hash是一个键值对集合。
-
Redis hash是一个string类 型的field和value的映射表,hash特别适合用于存储对象。
类似Java里面的Map< String,Object>
List(列表)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
它的底层实际是个链表
Set(集合)
Redis的Set是string类型的无序集合。它是通过HashTable实现实现的。
Zset(Sorted Set 有序集合)
Redis zset和set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的, 但分数(score)却可以重复。
常用API
Redis键(key)
-
keys *
:显示当前库的所有key -
exists key的名字
:判断某个key是否存在,1表示存在,0表示不存在 -
move key db
:将指定key移动至制定db库中,1表示成功,0表示失败 -
expire key 秒钟
:为给定的key设置过期时间,1表示成功,0表示失败 -
ttl key
:查看key还有多少秒过期,-1表示永不过期,-2表示已过期 -
type key
:查看key的数据类型
字符串(String)
-
set key value
:当前库添加键值对,若key重复则覆盖 -
get key
:获取当前库的键的值 -
del key
:删除当前库的键值对,1表示成功,0表示失败 -
append key value
:原Stirng值最后追加value字符串并返回string长度 -
strlen key
:返回value的长度 -
incr key
:自增1,并返回值,非数字报错 -
decr key
:自减1,并返回值,非数字报错 -
incrby key n
:自增n,并返回值,非数字报错 -
decrby key n
:自减n,并返回值,非数字报错 -
getrange key n1 n2
:获取制定区间范围的值,类似between...and,n2为-1表示到结束 -
setrange key n value
:设置key从n开始以后的值为value,覆盖原来的value长度的value -
setex key time value
:(set with expire),添加值同时设置过期时间,单位秒 -
setnx key value
:(set if not exist),如果key不存在就设置,存在则不设置 -
mset k1 v1 k2 v2 .. kn vn
:more set,同时设置多个键值对 -
mget k1 k2 k3
:more set,同时获取多个键的值 -
msetnx k1 v1 k2 v2 .. kn vn
:同时设置“个或多个键值对,当且仅当所有给定key都不存在。 -
getset key newValue
:将给定key的值设为value,并返回key的旧值(old value)。 简单一句话,先get然后立即set
列表(List)
-
lpush key v1 v2 .. vn
:左侧插入v1-vn -
rpush key v1 v2 .. vn
:右侧插入v1-vn -
lrange key n1 n2
:从key中获取从n1到n2的值 -
lpop key
:左侧(栈顶)弹出一个元素 -
rpop key
:右侧(栈底)弹出一个元素 -
lindex key index
:按照下标获取元素,没有返回 (nil) -
llen key
:获取列表长度 -
lrem key n value
:在列表中删除n个值为value的值 -
ltrim key start end
:截取列表中从start开始到end结束的值再赋给key -
rpoplpush list1 list2
:list1的最后(右侧)一个元素移动到list2的第一个(左侧)元素 -
lset key index value
:将列表下标为index的值设置为value值 -
linsert key before/after v1 v2
:将v1的 之后/之前插入v2元素
集合(Set)
-
sadd key v1 v2 .. vn
:添加元素到集合中,如果集合不存则创建集合 -
smembers key
:输出集合中的全部元素 -
sismember key value
:判断value是否在key集合中,返回0/1 -
scard key
:获取集合里面元素的数量 -
srem key value
:删除集合中的value元素 -
srandmember key n
:从集合中随机取出n个元素 -
spop key
:从集合中随机出栈一个元素 -
somve key1 key2 key1中的某个值
:将key1里面的值移动到key2里面 -
sdiff key1 key2
:求差集。在set1中而不在set02中的元素 -
sinter key1 key2
:求交集。两个set中的共有元素 -
sunion key1 key2
:求并集。两个set集合全部的元素
哈希(Hash)
-
hset key k1 v1
:添加一个键值对到哈希中 -
hget key k1
:从哈希键值对中获取 -
hmset key k1 v1 k2 v2 ...
:同时添加多个键值对到哈希中 -
hgetall key
:输出所有键值对 -
hdel key k
:删除键为k 的键值对 -
hlen key
:输出键值对的个数 -
hexists key k
:判断所有键中是否包含k -
hkeys key
:获取所有的键 -
hvals key
:获取所有的值 -
hincrby key k n
:将k的值自增n(整数) -
hincbryfloat key k n
:将k的值自增n(小数) -
hsetnx key k v
:如果不存在就设置,否则不设置
有序集合Zset(sorted set)
在set基础.上,加一个score值。 之前set是k1 v1 v2 v3, 现在zset是k1 score1 v1 score2 v2
-
zadd key k1 v1 ....
:添加Zset,k1,v1键值对,key递增有序 -
zrange key start end
:输出start到end范围内的value -
zrange key start end
:输出start到end范围内的key和value -
zrangebyscore key 开始score 结束score
:输出范围内的value,-
如果参数前加(表示不包含
-
命令 withscores
:包含key -
命令 limit start step
:类似分页查询
-
-
zrem key k
:删除键为k的键值对 -
zcard key
:返回键值对的个数 -
zcount key start end
:统计开始到结束之间的键值对个数 -
zrank key k
:输出k所在的下标值 -
zsocre key k
:输出k对应的value -
zrevrank key k
:从逆序中获取下标值 -
zrevrangbysocre key start end
:从逆序中获取范围值