zoukankan      html  css  js  c++  java
  • 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,分数以最后添加的元素为准。


     

  • 相关阅读:
    Java WebService入门实例
    Maven是什么
    for 循环
    2.4 DevOps工程师的故事:构建运行时的严谨性
    2.3.3 构建微服务的入口:Spring Boot控制器
    2.3.2 引导Spring Boot应用程序:编写引导类
    2.1.3 互相交流:定义服务接口
    第2章 使用Spring Boot构建微服务
    第1章 欢迎来到Cloud和Spring
    第一次在博客园开博
  • 原文地址:https://www.cnblogs.com/LinQingYang/p/12498599.html
Copyright © 2011-2022 走看看