【转载】Redis 数据类型

转自:https://www.cnblogs.com/Cloong/p/16448786.html

Redis 数据类型

Redis 有 5 种数据类型,分别为:

  • String
  • Hash
  • List
  • Set
  • Sorted Set( zset )

String

String 是 Redis 最基本的数据类型,结构是 key,value 的形式,类似 map 集合。
String 类型是二进制安全的,可以存储序列化的数据,比如一张图片。
String类型的最大能存储 512 M。

基本语法

  • set key value
  • get key
  • incr key
  • decr key
  • del key
  • setex key timeout value
  • ttl key
  • setnx key value

进阶语法

  • incrby key num
  • mset k1 v1 k2 v2
  • mget k1 k2
  • append key 'value'
  • setrange key index value

Hash

Hash 类型是 String 类型的 field 和 value 的映射表,或者说是一个 String 集合。
它特别适合存储对象,相比较而言,将一个对象存储在 Hash 类型里要比存储在 String 类型里占用更少的内存空间,并方便存储整个对象。
Redis 中每个 hash 最多可以存储 2^32 - 1 键值对(40多亿)。

基本语法

  • hset key hashkey hashvalue
  • hget key hashkey
  • hexists key hashkey
  • hdel key hashkey

进阶语法

  • hincrby key hashkey
  • hlen key
  • hkeys key
  • hvals key
  • hgetall key
  • 同样有 hsetnx,其作用跟用法和 setnx 一样

List

Redis 中的 List 类似 Java 中的 queue,也可以当做 List 来用。
List 类型是一个链表结构的集合,其主要功能有 push,pop,获取元素等。
更详细的说,List 类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List 的设计非常简单精巧,即可以作为栈,又可以作为队列。能满足绝大多数需求。

基本语法

  • rpush key value
  • lrange key start end
  • lpush key value
  • lpop key
  • rpop key
  • llen key

进阶语法

  • linsert key before/after refVal newVal
  • lset key index value
  • lrem key count value
  • ltrim key start end
  • lindex key index

Set

Set 集合是 String 类型的无序集合,Set 是通过 hashtable 实现的,对集合我们可以取交集、并集、差集,并且支持随机获取元素。
Set 集合成员是唯一的,这就意味着集合中不能出现重复的数据,如果插入重复元素,Redis 会忽略该操作。
Set 集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。

基本语法

  • sadd key value
  • smembers key
  • srem key value
  • spop key count

进阶语法

  • sdiff key1 key2
  • sdiffstore var key1 key2
  • sinter key1 key2 -> 返回两个set集合的交集
  • sinterstore var key1 key2
  • sunion key1 key2
  • sunionstore var key1 key2
  • smove key1 key2 value
  • scard key
  • sismember key value
  • srandmember key count

zset

zset 有序集合和 set 集合一样也是 String 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。Redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。
集合中最大的成员数为 2^32 - 1 ,即每个集合最多可存储40 多亿个成员。
需要注意的是,Redis 有序集合是默认升序的,score 越低排名越靠前,即 score 越低的元素下标越小。

基本语法

  • zadd key score column
  • zincrby key score column
  • zrange key start end
  • zrevrange key start end
  • zrank key name
  • zrevrank key name
  • zcard key

进阶语法

  • zrangebyscore key min max [withscores]
  • zrevrangebyscore key max min [withscores]
  • zrem key name
  • zremrangebyscore key min max [withscores]
  • zremrangebyrank key start end
  • zcount key min max

使用场景

  • 排序选用 zset
  • 数据是多个且允许重复选用 List
  • 数据是多个且不允许重复选用 Set
  • 其余的使用 String
  • 对象类型使用 Hash
点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注