zoukankan      html  css  js  c++  java
  • redis五种数据类型

    1.概述

    要很好的使用Redis,首先就得了解其数据类型有哪些,Redis的优势之一就是拥有丰富的数据类型,不同的业务场景可以选择最合适的数据类型存储数据。Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

    2.string

    string是redis最基本的类型,一个key对应一个value。value可以包含任何数据,可以是简单的字符,也可以是图片或者序列化对象,string 类型是二进制安全的。string 类型是Redis最基本的数据类型,string类型单个key的值最大能存储512MB数据。

    • 应用场景
      string类型可以存储任何数据,应用场景多,需要注意的是,单个key的数据大小不能太大,一般存数据很小的值。

    • 基本操作

    #写入
    redis 127.0.0.1:6379> SET test_string "这是字符串"
    OK
    #读取
    redis 127.0.0.1:6379> GET test_string
    "这是字符串"
    

    3.hash

    Redis中hash是一个键值(key=>value)对集合。hash是一个string 类型的field和value的映射表,hash经常用来存储对象。比如一个用户有名称,性别,年龄都属性,你可以选择每个属性单独作为一个key存储,这种方式造成key泛滥,最好的方式,就是把用户属性作为一个整体对象用hash存储,相比用string存储,hash更能节省空间,效率更高。

    • 应用场景
      hash类型一般应用在存储对象信息,例如用户基本信息等。

    • 基本操作

    #写入
    redis 127.0.0.1:6379> HMSET test_hash username "zhangsan" age 20
    "OK"
    #读取某个字段
    redis 127.0.0.1:6379> HGET test_hash username
    "zhangsan"
    #读取全部
    redis 127.0.0.1:6379> HGETALL test_hash
    "username"
    "zhangsan"
    "age"
    "20"
    

    4.list

    list是简单的字符串列表,按照插入顺序排序,列表中元素可重复。你可以添加一个元素到列表的头部(左边)或者尾部(右边),也可以从列表的两端弹出元素,向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。list中可以包含的最大元素数量是4294967295。

    • 应用场景
      list主要应用在跟顺序相关的业务中,例如最新消息排行榜,消息队列等。

    • 基本操作

    #左边插入
    redis 127.0.0.1:6379> lpush test_list_left 1
    (integer) 1
    redis 127.0.0.1:6379> lpush test_list_left 2
    (integer) 2
    redis 127.0.0.1:6379> lpush test_list_left 3
    (integer) 3
    #读取10条,先进后出
    redis 127.0.0.1:6379> lrange test_list_left 0 10
    1) "3"
    2) "2"
    3) "1"
    #右边插入
    redis 127.0.0.1:6379> rpush test_list_right 4
    (integer) 1
    redis 127.0.0.1:6379> rpush test_list_right 5
    (integer) 2
    redis 127.0.0.1:6379> rpush test_list_right 6
    #读取10条,先进先出
    redis 127.0.0.1:6379> lrange test_list_right 0 10
    1) "4"
    2) "5"
    3) "6"
    

    5.set

    Redis的集合是无序不可重复的,此处的无序是数据不能重复。和列表一样,在执行插入和删除以及判断是否存在某元素时,效率是很高的。集合最大的优势在于可以进行交集并集差集操作。Set可包含的最大元素数量是4294967295。

    • 应用场景
      set类型根据其集合属性,可以用在,例如关注粉丝业务(判断是否已关注被被关在),交集查找共同好友,唯一性可以统计访问网站的所有独立IP等。

    • 基本操作

    #写入
    redis 127.0.0.1:6379> sadd test_set 1
    (integer) 1
    redis 127.0.0.1:6379> sadd test_set 2
    (integer) 1
    redis 127.0.0.1:6379> sadd test_set 3
    (integer) 1
    redis 127.0.0.1:6379> sadd test_set1 4
    (integer) 1
    redis 127.0.0.1:6379> sadd test_set1 5
    (integer) 1
    redis 127.0.0.1:6379> sadd test_set1 6
    (integer) 1
    #读取
    redis 127.0.0.1:6379> smembers test_set
    1) "1"
    2) "2"
    3) "3"
    #判断元素是否存在
    redis 127.0.0.1:6379> sismember test_set 1
    (integer) 1
    #求并集
    redis 127.0.0.1:6379> SUNION test_set test_set1
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    6) "6"
    

    6.zset

    有序集合里元素时有顺序,不能重复的,此处的不能重复是索引为唯一的,数据却可以重复。和Set很像,都是字符串的集合,都不允许重复的成员出现在一个set中。他们之间差别在于有序集合中每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。尽管有序集合中的成员必须是唯一的,但是分数(score)却可以重复。

    • 应用场景
      zset类型主要利用有序和不重复性,例如可以用于在线游戏的积分排行榜,每当玩家的分数发生变化时,可以执行zadd更新玩家分数(score),此后在通过zrange获取几分top 10的用户信息。

    • 基本操作

    redis 127.0.0.1:6379> ZADD test_zset 10 a
    (integer) 1
    redis 127.0.0.1:6379> ZADD test_zset 20 b
    (integer) 1
    redis 127.0.0.1:6379> ZADD test_zset 30 c
    (integer) 1
    redis 127.0.0.1:6379> ZRANGE test_zset 0 10 WITHSCORES
    1) "a"
    2) "10"
    3) "b"
    4) "20"
    5) "c"
    6) "30"
    

    Redis的五种数据类型,每种类型的操作命令都得去仔细熟悉,这里只介绍了最基本的命令。各位如果觉得还有点意义,烦请点一下推荐,加个关注,互相交流。

  • 相关阅读:
    C connect实现Timeout效果(Linux)
    QSS网址
    C实现读写文件
    crond守护进程实现定时监控某进程占有内存的大小
    Ubuntu17安装Chrome有效
    Ubuntu16安装wine(转)
    直方图均衡化
    函数后面的const修饰符的作用
    C 线程学习记录
    Override Fuction 调用——到底使用的是谁的函数
  • 原文地址:https://www.cnblogs.com/yqzc/p/12446869.html
Copyright © 2011-2022 走看看