zoukankan      html  css  js  c++  java
  • Redis数据结构

    参考自 Redis in acion 中文版

    字符串

    Redis的字符串就是一个由字节组成的序列。

    在Redis里面,字符串可以存储以下3种类型的值。

    • 字节串(byte string)。
    • 整数。
    • 浮点数

    用户可以通过给定一个任意的数值,对存储着整数或者浮点数的字符串执行自增(increment)或者自减(decrement)操作

    在有需要的时候,Redis还会将整数转换成浮点数

    命令 用例和描述
    INCR INCR key-name—将键存储的值加上1
    DECR DECR key-name—将键存储的值减去1
    INCRBY INCRBY key-name amount—将键存储的值加上整数amount
    DECRBY DECRBY key-name amount—将键存储的值减去整数amount
    INCRBYFLOAT INCRBYFLOAT key-name amount—将键存储的值加上浮点数amount,这个命令在Redis 2.6或以上的版本可用
    命令 用例和描述
    APPEND APPEND key-name value—将值value追加到给定键key-name当前存储的值的末尾
    GETRAN GEGETRANGE key-name start end—获取一个由偏移量start至偏移量end范围内所有字符组成的子串,包括start和end在内
    SETRANG ESETRANGE key-name offset value—将从start偏移量开始的子串设置为给定值
    ... ...

    列表

    一个列表结构可以有序地存储多个字符串。

    命令 用例和描述
    RPUSH RPUSH key-name value [value ...]—将一个或多个值推入列表的右端
    LPUSH LPUSH key-name value [value ...]—将一个或多个值推入列表的左端
    RPOP RPOP key-name—移除并返回列表最右端的元素
    LPOP LPOP key-name—移除并返回列表最左端的元素
    LINDEX LINDEX key-name offset—返回列表中偏移量为offset的元素
    LRANGE LRANGE key-name start end—返回列表从start偏移量到end偏移量范围内的所有元素,其中偏移量为start和偏移量为end的元素也会包含在被返回的元素之内
    LTRIM LTRIM key-name start end—对列表进行修剪,只保留从start偏移量到end偏移量范围内的元素,其中偏移量为start和偏移量为end的元素也会被保留
    127.0.0.1:6379> rpush list-key tiem
    (integer) 1
    127.0.0.1:6379> rpush list-key item2
    (integer) 2
    127.0.0.1:6379> rpush list-key tiem
    (integer) 3
    127.0.0.1:6379> lrange list-key 0 -1
    1) "tiem"
    2) "item2"
    3) "tiem"
    127.0.0.1:6379> lindex list-key 1
    "item2"
    127.0.0.1:6379> lpop list-key
    "tiem"
    127.0.0.1:6379> lrange list-key 0 -1
    1) "item2"
    2) "tiem"
    
    

    Redis的集合

    集合则通过使用散列表来保证自己存储的每个字符串都是各不相同的。

    Redis的集合使用无序(unordered)方式存储元素,所以用户不能像使用列表那样,将元素推入集合的某一端,或者从集合的某一端弹出元素。

    命令 用例和描述
    SADD 将给定元素添加到集合
    SMEMBERS 返回集合包含的所有元素
    SISMEMBER 检查给定元素是否存在于集合中
    SREM 如果给定的元素存在于集合中,那么移除这个元素

    集合除了基本的添加操作和移除操作之外,还支持很多其他操作。SINTER、SUNION、SDIFF这3个命令就可以分别执行常见的交集计算、并集计算和差集计算。

    127.0.0.1:6379> sadd set-key item
    (integer) 1
    127.0.0.1:6379> sadd set-key item2
    (integer) 1
    127.0.0.1:6379> sadd set-key item3
    (integer) 1
    127.0.0.1:6379> 
    127.0.0.1:6379> sadd set-key item
    (integer) 0
    127.0.0.1:6379> smembers set-key
    1) "item3"
    2) "item2"
    3) "item"
    127.0.0.1:6379> sismember set-key item4
    (integer) 0
    127.0.0.1:6379> sismember set-key item
    (integer) 1
    127.0.0.1:6379> srem set-key item2
    (integer) 1
    127.0.0.1:6379> smembers set-key
    1) "item3"
    2) "item"
    127.0.0.1:6379> 
    
    

    散列

    Redis的散列可以存储多个键值对之间的映射。和字符串一样,散列存储的值既可以是字符串又可以是数字值,并且用户同样可以对散列存储的数字值执行自增操作或者自减操作。

    命令 用例和描述
    HSET 在散列里面关联起给定的键值对
    HGET 获取指定散列键的值
    HGETALL 获取散列包含的所有键值对
    HDEL 如果给定键存在于散列里面,那么移除这个键
    127.0.0.1:6379> hset hash-key sub-key value3
    (integer) 0
    127.0.0.1:6379> hset hash-key sub-key1 value1
    (integer) 1
    127.0.0.1:6379> hset hash-key sub-key2 value2
    (integer) 1
    127.0.0.1:6379> hset hash-key sub-key1 value1
    (integer) 0
    127.0.0.1:6379> hgetall hash-key
    1) "sub-key"
    2) "value3"
    3) "sub-key1"
    4) "value1"
    5) "sub-key2"
    6) "value2"
    127.0.0.1:6379> hdel hash-key sub-key2
    (integer) 1
    127.0.0.1:6379> hget hash-key sub-key
    "value3"
    127.0.0.1:6379> hgetall hash-key
    1) "sub-key"
    2) "value3"
    3) "sub-key1"
    4) "value1"
    127.0.0.1:6379> 
    

    有序集合

    有序集合和散列一样,都用于存储键值对:有序集合的键被称为成员(member),每个成员都是各不相同的;而有序集合的值则被称为分值(score), 分值必须为浮点数

    有序集合是Redis里面唯一一个既可以根据成员访问元素(这一点和散列一样),又可以根据分值以及分值的排列顺序来访问元素的结构

    命令 用例和描述
    ZADD 将一个带有给定分值的成员添加到有序集合里面
    ZRANGE 根据元素在有序排列中所处的位置,从有序集合里面获取多个元素
    ZRANGEBYSCORE 获取有序集合在给定分值范围内的所有元素
    ZREM 如果给定成员存在于有序集合,那么移除这个成员
    127.0.0.1:6379> zadd zset-key 100 member1
    (integer) 1
    127.0.0.1:6379> zadd zset-key 200 member0
    (integer) 1
    127.0.0.1:6379> zadd zset-key 300 member0
    (integer) 0
    127.0.0.1:6379> zrange zset-key 0 -1 withscores
    1) "member1"
    2) "100"
    3) "member0"
    4) "300"
    127.0.0.1:6379> zrangebyscore zset-key 0 250
    1) "member1"
    127.0.0.1:6379> zrangebyscore zset-key 0 250 withscores
    1) "member1"
    2) "100"
    127.0.0.1:6379> 
    
  • 相关阅读:
    GIS术语
    ArcGIS9.3 SDE安装
    Vue中videojs的配置
    vue项目打包部署后页面是空白的,以及部署之后页面能看到图片等资源找不到
    echarts属性的设置
    ASP.Net4中实现自定义的请求验证(转贴)
    ASP.NET Session的七点认识(转贴)
    JDK自带的keytool证书工具详解
    读取zip加密包里面文件的内容
    无题
  • 原文地址:https://www.cnblogs.com/AganRun/p/11816131.html
Copyright © 2011-2022 走看看