• redis的5种数据结构的简介


    5种数据结构

    1、字符串

    Redis 字符串是一个字节序列。在 Redis 中字符串是二进制安全的,这意味着它们没有任何特殊终端字符来确定长度,所以可以存储任何长度为 512 兆的字符串。

    示例

    127.0.0.1:6379> set name test
    OK
    127.0.0.1:6379> get name
    "test"

    在上面的例子中,SET 和 GET 是 Redis 命令,name 和 "yiibai" 是存储在 Redis 的键和字符串值

    2、列表(有序,字符可以相同)

    lpush   将给定值推入列表的左端
    rpush 将给定值推入列表的右端
    lrange 获取列表在给定范围上的所有制 ps: lrange list-key 0 -1 第二个位置为-1的时候展示所有的内容
    lindex 获取列表在给定位置上的单个元素
    lpop 从列表左端弹出一个值,并返回被弹出的值
    rpop 从列表右端弹出一个值,并返回被弹出的值
    127.0.0.1:6379> lpush list-key item
    (integer) 1

    127.0.0.1:6379> lrange list-key 0 10
    1) "item"

    127.0.0.1:6379> lpush list-key item1
    (integer) 2
    127.0.0.1:6379> lrange list-key 0 10
    1) "item1"
    2) "item"
    127.0.0.1:6379> rpush list-key item2
    (integer) 3
    127.0.0.1:6379> lrange list-key 0 10
    1) "item1"
    2) "item"
    3) "item2"

    127.0.0.1:6379> lindex list-key 1

    "item"

    127.0.0.1:6379> lpush list-key item    (可以存储相同的数据)
    (integer) 4
    127.0.0.1:6379> lrange list-key 0 -1
    1) "item"
    2) "item1"
    3) "item"
    4) "item2"

    127.0.0.1:6379> lrange list-key 0 -1
    1) "item"
    2) "item1"
    3) "item"
    4) "item2"

    删除数据
    127.0.0.1:6379> lpop list-key
    "item"
    127.0.0.1:6379> lrange list-key 0 -1
    1) "item1"
    2) "item"
    3) "item2"
    127.0.0.1:6379> rpop list-key
    "item2"
    127.0.0.1:6379> lrange list-key 0 -1
    1) "item1"
    2) "item"

    3、集合(无序,每个字符不相同)

    sadd        将给定元素添加到集合中
    smembers 返回集合包含的所有元素
    sismember 检查给定元素是否存在于集合中
    srem 如果给定的元素存在于集合中,那么移除这个元素
    127.0.0.1:6379> sadd set-key item
    (integer) 1
    127.0.0.1:6379> sadd set-key item1
    (integer) 1
    127.0.0.1:6379> smembers set-key
    1) "item1"
    2) "item"
    127.0.0.1:6379> sismember set-key item
    (integer) 1
    127.0.0.1:6379> sismember set-key item2
    (integer) 0
    127.0.0.1:6379> smembers set-key
    1) "item1"
    2) "item"
    127.0.0.1:6379> srem set-key item
    (integer) 1
    127.0.0.1:6379> smembers set-key
    1) "item1"

    4、散列(无序,键值不可以重复)

    Redis哈希是键值对的集合。 Redis哈希是字符串字段和字符串值之间的映射,所以它们用来表示对象。

    hset     在散列里面关联器给定的键值对
    hmset 一次可以插入多个值
    hget 获取指定散列键的值
    hgetall 获取散列包含的多有的键值对
    hdel 如果给定键存在于散列里面,那么移除这个键

    127.0.0.1:6379> hset hash-key sub-key1 value1
    (integer) 1
    127.0.0.1:6379> hgetall hash-key
    1) "sub-key1"
    2) "value1"


    127.0.0.1:6379> hset hash-key sub-key2 value2
    (integer) 1
    127.0.0.1:6379> hgetall hash-key
    1) "sub-key1"
    2) "value1"
    3) "sub-key2"
    4) "value2"

    127.0.0.1:6379> hget hash-key sub-key1
    "value1"


    127.0.0.1:6379> hdel hash-key sub-key2
    (integer) 1
    127.0.0.1:6379> hgetall hash-key
    1) "sub-key1"
    2) "value1"

    127.0.0.1:6379> hmset hash-key sub-key2 value2 sub-key1 value1 sub-key3 value3
    OK
    127.0.0.1:6379> hgetall hash-key
    1) "sub-key1"
    2) "value1"
    3) "sub-key2"
    4) "value2"
    5) "sub-key3"
    6) "value3"

    在上面的例子中,哈希数据类型用于存储包含用户基本信息的用户对象。

    5、有序集合

    语序集合每个键都有一个浮点数的值,这个值叫分值

    zadd           添加到集合中
    zrange 获取集合元素
    zrangebyscore 获取在给定分值范围内的所有元素
    zrem 移除
    127.0.0.1:6379> zadd zset-key 10 memeber1
    (integer) 1
    127.0.0.1:6379> zadd zset-key 10 memeber2
    (integer) 1
    127.0.0.1:6379> zadd zset-key 11 memeber2
    (integer) 0
    127.0.0.1:6379> zrange zset-key 0 -1
    1) "memeber1"
    2) "memeber2"
    127.0.0.1:6379> zrange zset-key 0 -1 withscores
    1) "memeber1"
    2) "10"
    3) "memeber2"
    4) "11"
    
    127.0.0.1:6379> zadd zset-key 11 memeber3
    (integer) 1
    127.0.0.1:6379> zrange zset-key 0 -1 withscores
    1) "memeber1"
    2) "10"
    3) "memeber2"
    4) "11"
    5) "memeber3"
    6) "11"
    
    127.0.0.1:6379> zrangebyscore zset-key 0 100
    1) "memeber1"
    2) "memeber2"
    3) "memeber3"
    127.0.0.1:6379> zrangebyscore zset-key 0 100 withscores
    1) "memeber1"
    2) "10"
    3) "memeber2"
    4) "11"
    5) "memeber3"
    6) "11"
  • 相关阅读:
    C++ XML文件解析
    coco2d-x create tableView
    cocos2d-x button setTitleLabel
    cocos2d-X create std colorlayer
    Windows cmd "tree"
    C/C++ std::function && std::bind
    C/C++ “std::invoke”: 未找到匹配的重载函数
    31 迭代器 Iterator 是什么?
    30 哪些集合类是线程安全的?
    02 rpx 与 px
  • 原文地址:https://www.cnblogs.com/dragkiss/p/5666338.html
Copyright © 2020-2023  润新知