Redis

作者: 总瓢把子 | 来源:发表于2019-07-24 19:31 被阅读0次

    redis

    redis 的数据结构:

    • 字符串 String
    • 哈希 Hash : 键值对, map 格式
    • 列表 List :可以从列表头部或尾部插入元素
    • 集合 Set : 不允许重复元素,无序
    • 有序集合 zset : sortedset ,不允许重复元素,且元素有顺序
    String (字符串)

    String 类型是二进制安全的。
    意思是 redis 的 String 可以包含任何数据,比如 jpg 图片 或者 序列化的对象
    String 类型是 Redis 最基本的数据类型,一个键最大能存储 512 MB

    127.0.0.1:6379> set name "redis.net.cn"
    OK
    127.0.0.1:6379> get name
    "redis.net.cn"
    127.0.0.1:6379> del name
    (integer) 1
    
    

    以上实例我们使用了Redis 的 SET 和 GET 命令。键为 name , 对应的值为 redis.net.cn

    Hash (哈希)

    hash 是一个键值对集合
    hash 是一个 String 类型的 filed 和 value 的映射表, hash 特别适合用于存储对象
    Redis中每个 hash 可以存储 2 ^ (32 - 1) 键值对(40多亿)

    127.0.0.1:6379> HMSET user:1 username redis.net.cn password redis.net.cn points 200
    OK
    127.0.0.1:6379> HGETALL user:1
    1) "username"
    2) "redis.net.cn"
    3) "password"
    4) "redis.net.cn"
    5) "points"
    6) "200"
    127.0.0.1:6379> hset user:1 age 18
    (integer) 1
    127.0.0.1:6379> HGETALL user:1
    1) "username"
    2) "redis.net.cn"
    3) "password"
    4) "redis.net.cn"
    5) "points"
    6) "200"
    7) "age"
    8) "18"
    127.0.0.1:6379> hget user:1 age
    "18"
    127.0.0.1:6379> hdel user:1 age
    (integer) 1
    127.0.0.1:6379> HGETALL user:1
    1) "username"
    2) "redis.net.cn"
    3) "password"
    4) "redis.net.cn"
    5) "points"
    6) "200"
    

    以上实例中 hash 数据类型 存储了包含用户脚本信息的 用户对象。
    实例中我们使用了 HMSET,HGETALL 命令,user:1为键值

    List (列表)

    列表是简单的字符串列表,按照插入顺序排序。
    可以添加一个元素到 列表的头部(左边) 或者 尾部(右边)

    127.0.0.1:6379> lpush redis.net.cn redis
    (integer) 1
    127.0.0.1:6379> lpush redis.net.cn mongodb
    (integer) 2
    127.0.0.1:6379> lpush redis.net.cn rabitmq
    (integer) 3
    127.0.0.1:6379> lrange redis.net.cn 0 10
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    127.0.0.1:6379> LRANGE redis.net.cn 0 -1
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    127.0.0.1:6379> rpush redis.net.cn mysql
    (integer) 4
    127.0.0.1:6379> lrange redis.net.cn 0 -1
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    4) "mysql"
    127.0.0.1:6379> lpop redis.net.cn
    "rabitmq"
    127.0.0.1:6379> lrange redis.net.cn 0 -1
    1) "mongodb"
    2) "redis"
    3) "mysql"
    127.0.0.1:6379> rpop redis.net.cn
    "mysql"
    127.0.0.1:6379> lrange redis.net.cn 0 -1
    1) "mongodb"
    2) "redis"
    
    

    列表最多可以存储 2 ^ (32 - 1) 元素(4294967295, 每个列表可存储40多亿)

    Set (集合)

    Redis的 Set 是 String 类型的无序集合。
    集合是通过哈希表实现的,所以添加、查找、删除的复杂度都是 O(1) 。

    127.0.0.1:6379> sadd redis.net.cn.2 redis
    (integer) 1
    127.0.0.1:6379> sadd redis.net.cn.2 mongodb
    (integer) 1
    127.0.0.1:6379> sadd redis.net.cn.2 rabitmq
    (integer) 1
    127.0.0.1:6379> sadd redis.net.cn.2 rabitmq
    (integer) 0
    127.0.0.1:6379> smembers redis.net.cn.2
    1) "redis"
    2) "rabitmq"
    3) "mongodb"
    127.0.0.1:6379> srem redis.net.cn.2 rabitmq
    (integer) 1
    127.0.0.1:6379> smembers redis.net.cn.2
    1) "redis"
    2) "mongodb"
    
    

    注意:以上实例中,rabitmq添加了两次,但是根据集合内元素的唯一性,第二次插入的元素将被忽略。
    集合中最大的成员数为 2 ^ (32 - 1) (4294967295, 每个集合可存储40多亿个成员)

    zset (sorted set : 有序集合)

    zsetset 一样也是 String 类型元素的集合,且不允许重复的成员
    不同的是每个元素都会关联一个 double 类型的分数。
    Redis正式通过分数来为集合中的成员进行从小到大的排序。

    zset 的成员是唯一的,但分数(score)确实可以重复的。

    127.0.0.1:6379> zadd redis.net.cn.3 0 redis
    (integer) 1
    127.0.0.1:6379> zadd redis.net.cn.3 0 mongodb
    (integer) 1
    127.0.0.1:6379> zadd redis.net.cn.3 0 rabitmq
    (integer) 1
    127.0.0.1:6379> zadd redis.net.cn.3 0 rabitmq
    (integer) 0
    127.0.0.1:6379> zrangebyscore redis.net.cn.3 0 100
    1) "mongodb"
    2) "rabitmq"
    3) "redis"
    127.0.0.1:6379> zrange redis.net.cn.3 0 -1
    1) "mongodb"
    2) "rabitmq"
    3) "redis"
    127.0.0.1:6379> zrange redis.net.cn.3 0 -1 withscores
    1) "mongodb"
    2) "0"
    3) "rabitmq"
    4) "0"
    5) "redis"
    6) "0"
    127.0.0.1:6379> zrem redis.net.cn.3 redis
    (integer) 1
    127.0.0.1:6379> zrange redis.net.cn.3 0 -1
    1) "mongodb"
    2) "rabitmq"
    127.0.0.1:6379> zrange redis.net.cn.3 0 -1 withscores
    1) "mongodb"
    2) "0"
    3) "rabitmq"
    4) "0"
    
    

    通用命令

    1. keys * : 查询所有键
    2. type key : 获取键对应的 value 的类型
    3. del key : 删除指定 key value

    相关文章

      网友评论

          本文标题:Redis

          本文链接:https://www.haomeiwen.com/subject/pxbfrctx.html