zoukankan      html  css  js  c++  java
  • Redis 键值数据类型及基本操作

    到目前为止,Redis 支持的键值数据类型如下:

    字符串(String)

    哈希(Map)

    列表(list)

    集合(sets)

    有序集合(sorted sets)

     

    1. String 字符串类型

    string是redis最基本的类型,一个key对应一个value。

    string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

    string类型是Redis最基本的数据类型,一个键最大能存储512MB。

    String 命令:

    赋值与取值 set key value / get key

    >set name zhangzhi

    ok

    >get name

    "zhangzhi"

    当字符串值为整数时,incr命令可递增键值
    >set a 1

    ok
    >incr a

    (integer) 2 

    键不存在时,默认键值为0
    >incr b

    (integer) 1

    Incrby 和incr类似,但是可指定一次增加的值
    >incrby c 10

    (integer) 10
    decr 和decrby 减少整数,incrbyfloat增加指定的浮点数,append向尾部追加值,如果键不存在则值为指定value
    >set d hello

    ok
    >append d world

    (integer) 10 # append 命令返还字符串长度 “helloworld” 长度为10

    strlen key 获取字符串长度
    >strlen d

    (integer) 10
    同时获取(mget)/设置(mget)多个键值

    >mset a valuea b valueb

    >mget a b 

    2. Hashes 哈希

    哈希的键值也是一种字典结构,其存储了字段和字段值的映射,特别社和存储对象。但字段值只能是字符串,散列类型不能嵌套其他的数据类型。

    例子:

    >hset user:1 name zhang    #赋值

    >hget user:1 name                #取值

    >hmset user:1 name zhangzhi age 29 address beijng #赋多值

    >hmget user:1 name age #根据keys获取多个值

    >hgetall user:1  #获取全部值

    >hexists user:1 address #判断字段是否存在

    >hsetnx user:1 address Beijing # 当字段不存在时赋值

    >hdel user:1 age  #删除字段

    >hincrby user:1 age 1 # 增加数字,类似incrby ,散列没有incr

    >hkeys user:1 #获取字段名

    >hvals user:1  #获取字段值

    >hlen user:1 # 获取字段数量

     

    3. 列表(Lists)
    Redis列表是简单的字符串列表,按照插入顺序排序。 你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
    LPUSH命令插入一个新元素到列表头部,而RPUSH命令 插入一个新元素到列表的尾部。当 对一个空key执行其中某个命令时,将会创建一个新表。列表最多可存储 2的32次方 – 1个 元素 (4294967295, 每个列表可存储40多亿)。
    例子:
    >lpush list:1 a #创建列表list:1 并插入a

    >rpush list:1 b #右边插入b

    >lrange list:1 0 10 # 获取list:1 索引从0到10的元

    >lpop list:1 #左边弹出元素

    >rpop list:1 #右边弹出元素

    >llen list:1 # 列表中元素的个数

    >lrem list:1 2 a #删除列表中指定的值 2为数量

    >linde list:1 0 # 获得指定索引的元素值

    >lset list:1 0 2 #设置指定索引的元素值

    >ltrim list1 2 4 #删除指定索引范围之外的所有元素

    >linsert list1 before 4 99      #Linsert 命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
    >rpoplpush list1 list2           #rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

    4. Set(集合)

    Set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
    例子:
    >sadd set:1 1 2 #已经存在集合中的元素忽略

    >srem set:1 2 3

    >smembers set:1

    >sismember set:1 4 #判断元素是否在集合中

    >sdiff set:1 set:2 #集合间差集

    >sinter set:1 set:2 # 集合交集

    >sunion set:1 set:2 # 集合并集

    5. 有序集合(Sorted sets)

    Redis有序集合和Redis集合类似,它们的差别是,每个有序集合 的成员都关联着一个评分,这个评分用于把有序集 合中的成员按最低分到最高分排列。
    例子:
    >zadd zset:1 0 redis

    >zadd zset:1 1 monogdb

    >zadd zset:1 2 mysql

    >zrangebyscore zset:1 0 1000

    >zscore zset:1 mysql #获取元素分数

    >zrange zset:1 0 -1 withscores

  • 相关阅读:
    20个最佳的Java集合框架面试题目
    SSL/TLS 加密新纪元
    NServiceBus-日志
    NServiceBus-容器
    NServiceBus-网关和多站点分布
    NServiceBus-性能测试
    NServiceBus教程-持久化配置
    NServiceBus教程-持久化
    NServiceBus教程-NServiceBus和WCF
    NServiceBus教程-消息传递与处理
  • 原文地址:https://www.cnblogs.com/zhangzhi19861216/p/4711058.html
Copyright © 2011-2022 走看看