Redis数据类型

目录

Redis数据类型

    1. string

    2. hash

    3. List

    4. Set

    5. Zset(Redis有序集合(sorted set)


Redis数据类型

    Redis支持五种数据类型:string(字符串), hash(哈希), list(列表), set(集合)及zset(有序集合)。

    1. String
    string是Redis最基本的类型,你可以理解成与Memcached(  菜鸟教程  |  百度百科  )一样的类型,一个key对应一个value。

    string类型是二进制安全的。意思是Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。一个键最大能存储512MB。

    Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。


    代码实例如下:

127.0.0.1:6379> set name "Spring Boot Plus Kotlin" # SET KEY_NAME VALUE
OK
127.0.0.1:6379> get name  # GET KEY_NAME
"Spring Boot Plus Kotlin"

     

    在以上实例中我们使用了Redis的set和get命令。键为name,对应的值为"Spring Boot Plus Kotlin"。

    2. Hash
    Redis中的hash是一个键值(key=>value)对集合。

    Redis hash是一个string类型的field和value的映射表,hash适用于存储对象。

    代码实例如下:

127.0.0.1:6379> HMSET myhash field1 "Hello" field2 "World" # HMGET KEY_NAME FIELD1...FIELDN 

OK

127.0.0.1:6379> HGET myhash field1 # HGET KEY_NAME FIELD_NAME

"Hello"

127.0.0.1:6379> HGET myhash field2

"World"

      

    以上实例中hash数据类型存储了包含用户脚本信息的用户对象。实例中我们使用了Redis HMSET, HGETALL命令,user∶1为键值。

    每个hash可以存储的键值对为232-1 (= 4,294,967,296‬)。
    3. List
    Redis中的list是简单的字符串列表,按照插入顺序排序。

    你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

    代码实例如下:

127.0.0.1:6379> lpush mylist redis   # LPUSH KEY_NAME VALUE1.. VALUEN
(integer) 1
127.0.0.1:6379> lpush mylist springboot
(integer) 2
127.0.0.1:6379> lpush mylist kotlin
(integer) 3
127.0.0.1:6379> lpush mylist kotlin
(integer) 4
127.0.0.1:6379> lpush mylist 0 10    #这里加入mylist中两个元素:  0和10
(integer) 6
127.0.0.1:6379> lrange mylist 0 10  # LRANGE KEY_NAME START END
1) "10"
2) "0"
3) "kotlin"
4) "kotlin"
5) "springboot"
6) "redis"
127.0.0.1:6379>

    

    列表最多可存储的元素为232-1。

    4. Set
    Redis的set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
    使用sadd命令添加一个string元素到key对应的set集合中,成功返回1,如果元素已经在集合中返回0,如果key对应的set不存在则返回错误。
   

    向集合添加一个或多个成员命令:

127.0.0.1:6379> sadd myset redis  # SADD key member1 [member2]
(integer) 1
127.0.0.1:6379> sadd myset springboot
(integer) 1
127.0.0.1:6379> sadd myset kotlin
(integer) 1
127.0.0.1:6379> sadd myset kotlin  # 元素已经在集合中返回0
(integer) 0

    获取集合的成员数:

127.0.0.1:6379> scard myset # SCARD key
(integer) 3

    返回集合中的所有成员:

127.0.0.1:6379> smembers myset # SMEMBERS key
1) "redis"
2) "kotlin"
3) "springboot"

    

    注意:以上实例中kotlin添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

    集合中最大的成员数为232-1。
    5. Zset(
Redis 有序集合(sorted set)

    Redis zset和set一样,也是string类型元素的集合,且不允许重复的成员。

    zset 和 set不同的是,zset 每个元素都会关联一个double类型的分数。

    redis正是通过分数来为集合中的成员进行从小到大的排序。

    zset的成员是唯一的,但分数(score)却可以重复

    集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。

    集合中最大的成员数为232-1。

    代码实例如下:

127.0.0.1:6379> zadd mysortedset 1 redis          # ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN
(integer) 1
127.0.0.1:6379> zadd mysortedset 2 mongodb
(integer) 1
127.0.0.1:6379> zadd mysortedset 3 mysql
(integer) 1
127.0.0.1:6379> zadd mysortedset 4 mysql
(integer) 0
127.0.0.1:6379> zadd mysortedset 5 mysql
(integer) 0ZRANGE key start stop [WITHSCORES]
127.0.0.1:6379> zrange mysortedset 0 10 withscores  # ZRANGE key start stop [WITHSCORES]
1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "5"

   

    在以上实例中我们通过命令ZADD向redis的有序集合中添加了三个值并关联上分数。我们重复添加了MySQL,分数以最后添加的元素为准。


 

原文地址:https://www.cnblogs.com/LinQingYang/p/12498599.html