学习笔记:Redis数据结构

来源:互联网 发布:如何安装sai软件 编辑:程序博客网 时间:2024/06/05 07:27

     Redis可以存储键与7种数据结构之间的映射,这7种数据类型包括String、List、Set、Sorted set(Zset)、Hash、Bit array(Bitmap)和HyperLogLog(HLL)。


①String

     字符串。可以是string、int和float。

  • SET:设置键中的存储值。
  • GET:获取键中的存储值。
  • STRLEN:获取键值的字符长度。
  • DEL:删除键中的存储值(通用命令 → 适用于所有7种数据类型)。

127.0.0.1:6379> get hello(nil)127.0.0.1:6379> set hello worldOK127.0.0.1:6379> get hello"world"127.0.0.1:6379> strlen hello(integer) 5127.0.0.1:6379> del hello(integer) 1127.0.0.1:6379> get hello(nil)127.0.0.1:6379> 

②List

     列表。若干String的有序存储。

  • LPUSH / RPUSH:将一个给定元素推入List的左端 / 右端。
  • LPOP / RPOP:从List的左端 / 右端弹出和返回一个元素。
  • LINDEX:获取List给定位置上的元素(索引)。
  • LRANGE:获取List给定范围内的元素(分片)。
  • LLEN:返回List中的元素数量。

127.0.0.1:6379> rpush list item(integer) 1127.0.0.1:6379> rpush list item2(integer) 2127.0.0.1:6379> rpush list item(integer) 3127.0.0.1:6379> lrange list 0 -11) "item"2) "item2"3) "item"127.0.0.1:6379> lindex list 1"item2"127.0.0.1:6379> lpop list"item"127.0.0.1:6379> lrange list 0 -11) "item2"2) "item"127.0.0.1:6379> llen list(integer) 2127.0.0.1:6379> 

③Set

     集合。去重和无序的List。

  • SADD:给定元素添加到Set。
  • SREM:给定元素从Set移除(如果有的话)。
  • SISMEMBER:检查给定元素是否存在于Set中。
  • SMEMBERS:返回Set中的所有元素(慎用 → 如果Set中的元素很多执行速度可能会很慢)。
  • SCARD:返回Set中的元素数量。

127.0.0.1:6379> sadd set item(integer) 1127.0.0.1:6379> sadd set item2(integer) 1127.0.0.1:6379> sadd set item3(integer) 1127.0.0.1:6379> sadd set item(integer) 0127.0.0.1:6379> smembers set1) "item3"2) "item"3) "item2"127.0.0.1:6379> sismember set item4(integer) 0127.0.0.1:6379> sismember set item(integer) 1127.0.0.1:6379> srem set item2(integer) 1127.0.0.1:6379> srem set item2(integer) 0127.0.0.1:6379> smembers set1) "item3"2) "item"127.0.0.1:6379> scard set(integer) 2127.0.0.1:6379> 

④Sorted set(Zset)

     排序集合。存储键值对:键称为成员(member),必需唯一;值称为分值(score),必须为float。

  • ZADD:同SADD。
  • ZREM:同SREM。
  • ZRANGE:同LRANGE。
  • ZRANGEBYSCORE:返回Zset中给定score范围内的所有元素。
  • ZCARD:返回Zset中的元素数量。

127.0.0.1:6379> zadd zset 728 member1(integer) 1127.0.0.1:6379> zadd zset 982 member0(integer) 1127.0.0.1:6379> zadd zset 982 member0(integer) 0127.0.0.1:6379> zrange zset 0 -11) "member1"2) "member0"127.0.0.1:6379> zrange zset 0 -1 withscores1) "member1"2) "728"3) "member0"4) "982"127.0.0.1:6379> zrangebyscore zset 0 800 withscores1) "member1"2) "728"127.0.0.1:6379> zrem zset member1(integer) 1127.0.0.1:6379> zrem zset member1(integer) 0127.0.0.1:6379> zrange zset 0 -1 withscores1) "member0"2) "982"127.0.0.1:6379> zcard zset(integer) 1127.0.0.1:6379> 

⑤Hash

     散列。键与若干键值对映射的存储。Mini Redis——Redis本身就是存储键与7种数据结构之间的映射。

  • HSET:给定键值对关联到Hash。
  • HGET:获取Hash中给定键的值。
  • HDEL:移除Hash中的给定键(如果有的话)。
  • HGETALL:获取Hash中的所有键值对。
  • HLEN:返回Hash中的键值对数量。

127.0.0.1:6379> hset hash key1 value1(integer) 1127.0.0.1:6379> hset hash key2 value2(integer) 1127.0.0.1:6379> hset hash key1 value1(integer) 0127.0.0.1:6379> hgetall hash1) "key1"2) "value1"3) "key2"4) "value2"127.0.0.1:6379> hdel hash key2(integer) 1127.0.0.1:6379> hdel hash key2(integer) 0127.0.0.1:6379> hget hash key1"value1"127.0.0.1:6379> hgetall hash1) "key1"2) "value1"127.0.0.1:6379> hlen hash(integer) 1127.0.0.1:6379> 

⑥Bit array(Bitmap)

     字符位操作。

  • SETBIT:设置位值。
  • GETBIT:获取位值。
  • BITCOUNT:返回位值为1的位数计数。

127.0.0.1:6379> set bitmap RedisOK127.0.0.1:6379> bitcount bitmap(integer) 19127.0.0.1:6379> getbit bitmap 1(integer) 1127.0.0.1:6379> setbit bitmap 1 0(integer) 1127.0.0.1:6379> bitcount bitmap(integer) 18127.0.0.1:6379> 

⑦HyperLogLog(HLL)

     元素基数(cardinality)计数。

  • PFADD:给定元素添加到HLL。
  • PFCOUNT:返回给定HLL的基数。

127.0.0.1:6379> pfadd hll a b c d(integer) 1127.0.0.1:6379> pfcount hll(integer) 4127.0.0.1:6379> pfadd hll e f g h(integer) 1127.0.0.1:6379> pfcount hll(integer) 8127.0.0.1:6379> pfadd hll a c k r z(integer) 1127.0.0.1:6379> pfcount hll(integer) 11127.0.0.1:6379> 



参考:

https://redis.io/topics/data-types-intro

《Redis in Action》( https://book.douban.com/subject/10597898/ )

原创粉丝点击