zoukankan      html  css  js  c++  java
  • Redis基本的数据类型和常用命令

    关于redis的介绍和redis在windows下的安装问题,博主已经在另一篇博客windows下安装redis进行了介绍,在此就不过多的赘述。

    String(字符串类型)

    • string是redis最基本的类型,一个key对应一个value。
    • 一个键最大能存储512MB
    • 相关命令主要用于管理redis字符串的值
      常用命令示例:
      这里写图片描述
    set username Rock_R //设置一个key=username value=Rock_R的键值对
    
    exists username  //检查是否存在key= username的键值对
    
    get username  //获取key=username 的value
    
    dump username //序列化username ,并返回被序列化的value
    
    rename username myname //重新将key=username 的键值对命名为myname
    
    get myname //获取key=myname 的value
    
    del myname //删除key=myname的键值对

    Hash(哈希)

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

    这里写图片描述

    127.0.0.1:6379>hset user Rock_R 123 //在field=user 建立一个key=Rock_R value=123的射映
    (integer) 1
    127.0.0.1:6379>hget user Rock_R //获取field=user下key=Rock_R的value值
    "123"
    127.0.0.1:6379> hmset user Rock_A 123 Rock_B 456 //同时设置多个值 
    OK
    127.0.0.1:6379> HGETALL user //得到user下所有的值
    1) "Rock_R"
    2) "123"
    3) "Rock_A"
    4) "123"
    5) "Rock_B"
    6) "456"
    127.0.0.1:6379> hexists user Rock_R //判断user下是否存在key=Rock_R
    (integer) 1
    127.0.0.1:6379> HKEYS user //获取user下的所有key值
    1) "Rock_R"
    2) "Rock_A"
    3) "Rock_B"
    127.0.0.1:6379> hvals user //获取user下所有的value值
    1) "123"
    2) "123"
    3) "456"
    127.0.0.1:6379> hdel user Rock_R //删除user下的Rock_R
    (integer) 1
    127.0.0.1:6379> HGET user Rock_R //判断是否删除成功
    (nil)
    127.0.0.1:6379> HDEL user Rock_A Rock_B //同时删除user下的Rock_A Rock_B
    (integer) 2
    127.0.0.1:6379> HGETALL user //判断是否删除成功
    (empty list or set)

    列表(List)

    • Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
    • Redis当向列表添加值时,最后添加的总是第一个取出。同理,最先添加的,最后取出。
      这里写图片描述
      这里写图片描述
    127.0.0.1:6379> lpush user Rock_A //向列表user里面添加value=Rock_A
    (integer) 1
    127.0.0.1:6379> lpush user Rock_B //同上
    (integer) 2
    127.0.0.1:6379> lpush user Rock_C //同上
    (integer) 3
    127.0.0.1:6379> lpush user Rock_D //同上
    (integer) 4
    127.0.0.1:6379> lrange user 0 4 //取出列表user下角标由0-4的值
    1) "Rock_D"
    2) "Rock_C"
    3) "Rock_B"
    4) "Rock_A"
    127.0.0.1:6379> lindex user 2 //取出列表user下索引为2的值
    "Rock_B"
    127.0.0.1:6379> blpop user 60 //获取并移除列表user的第一个值,如果列表没有元素会阻塞列表直到等待超过60或发现可弹出元素为止。
    1) "user"
    2) "Rock_D"
    127.0.0.1:6379> brpop user 60 //获取并移除列表user的最后一个值。
    1) "user"
    2) "Rock_A"
    127.0.0.1:6379> brpop user name //获取user最后一个值并将其移动到列表名为name之中(将从user中移除)
    1) "user"
    2) "Rock_B"
    127.0.0.1:6379> llen user //获取user的长度
    (integer) 1
    127.0.0.1:6379> lrange user 0 2 //取出列表user下角标由0-2的值
    1) "Rock_C"
    127.0.0.1:6379> linsert user after Rock_C Rock_E //向user中同时插入多个值
    (integer) 2
    127.0.0.1:6379> lrange user 0 2
    1) "Rock_C"
    2) "Rock_E"

    Set(集合)

    • Redis的Set类型是string类型的无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据。
    • 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
      这里写图片描述
    127.0.0.1:6379> sadd demo Rock_A  //向demo集合中加入元素Rock_A
    (integer) 1
    127.0.0.1:6379> sadd demo Rock_B Rock_C //同时向demo集合中加入Rock_B和Rock_C
    (integer) 2
    127.0.0.1:6379> scard demo //得到集合元素的个数
    (integer) 3
    127.0.0.1:6379> sdiff demo //得到该集合和空集的差集,即集合本身
    1) "Rock_A"
    2) "Rock_B"
    3) "Rock_C"
    127.0.0.1:6379> sadd demo2 Rock_A //向demo2中添加元素Rock_A(这里是向不同的集合添加同一元素是可以的,但不可以像同一个集合添加相同的元素)
    (integer) 1
    127.0.0.1:6379> sinter demo demo2 //找出集合demo和demo2的交集
    1) "Rock_A"
    127.0.0.1:6379> SISMEMBER demo Rock_A //判断在demo中是否存在元素Rock_A
    (integer) 1
    127.0.0.1:6379> SMEMBERS demo //列出集合demo的所有元素
    1) "Rock_B"
    2) "Rock_A"
    3) "Rock_C"
    127.0.0.1:6379> sdiff demo demo2 //列出demo和demo2的差集
    1) "Rock_B"
    2) "Rock_C"
    127.0.0.1:6379> sadd demo Rock_D //向集合demo2添加元素Rock_D
    (integer) 1
    127.0.0.1:6379> sunion demo demo2 //求出demo和demo2的并集
    1) "Rock_A"
    2) "Rock_B"
    3) "Rock_D"
    4) "Rock_C"

    zset(sorted set:有序集合)

    • Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
    • 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
    • zset的成员是唯一的,但分数(score)却可以重复。
      这里写图片描述
    127.0.0.1:6379> zadd room 0 Rock_S //向room集合中添加分数为0,value=Rock_S的元素
    (integer) 1
    127.0.0.1:6379> ZADD room 2 Rock_A 3 Rock_B 1 Rock_C //向集合room中同时插入多个元素
    (integer) 3
    127.0.0.1:6379> zcard room //得到集合元素个数
    (integer) 4
    127.0.0.1:6379> zcount room 0 4 //得到集合指定区间集合个数
    (integer) 4
    127.0.0.1:6379> ZRANGE room 0 4 WITHSCORES //按照分数从小到大进行排列
    1) "Rock_S"
    2) "0"
    3) "Rock_C"
    4) "1"
    5) "Rock_A"
    6) "2"
    7) "Rock_B"
    8) "3"
    127.0.0.1:6379> zrank room Rock_R
    (nil)
    127.0.0.1:6379> zrank room Rock_A //查询Rock_A的分数
    (integer) 2
    127.0.0.1:6379> ZREMRANGEBYSCORE room 0 2 //删除0-2分数区间的元素
    (integer) 3
    127.0.0.1:6379> zrange room 0 4 WITHSCORES //检查是否删除成功
    1) "Rock_B"
    2) "3"

    以上就是redis的基本类型,以及其对应的一些命令操作。如果还想了解其他更多关于redis的内容,欢迎查看博主的其他博客内容

    博客园:https://www.cnblogs.com/newtol 微信公众号:Newtol 【转发请务必保留原作者,否则保留追责权利】
  • 相关阅读:
    lambda表达式
    C#_单例模式
    Authorize的Forms认证
    10. windows下原来可以这样隐藏webshell
    8. php回调后门
    7. 编辑器漏洞整理
    6. webshell文件上传分析溯源
    1.5 webshell文件上传漏洞分析溯源(1~4)
    1.4 DVWA亲测文件上传漏洞
    1.3 任意文件查看与下载漏洞
  • 原文地址:https://www.cnblogs.com/newtol/p/10159134.html
Copyright © 2011-2022 走看看