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的数据类型

Redis 五大数据类型及常用API

字符串(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

 

 

 Redis 五大数据类型及常用APIRedis 五大数据类型及常用API

 列表(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元素

 Redis 五大数据类型及常用API

集合(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集合全部的元素

 Redis 五大数据类型及常用API

哈希(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:如果不存在就设置,否则不设置

 Redis 五大数据类型及常用API

 

有序集合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:从逆序中获取范围值

 Redis 五大数据类型及常用API