写点什么

Redis 常用命令总结,java 项目实例教程详细

作者:Java高工P7
  • 2021 年 11 月 10 日
  • 本文字数:3417 字

    阅读完需:约 11 分钟

  1. "lisi"


  • lpop:移除最左(头部)的一个元素

  • rpop: 移除最右边(尾部)的一个元素


127.0.0.1:6379> lpush mylist hello1 # 通过 lpush 命令为 key 为 mylist 的增加三个元素


(integer) 1


127.0.0.1:6379> lpush mylist hello2


(integer) 2


127.0.0.1:6379> lpush mylist hello3


(integer) 3


127.0.0.1:6379> lrange mylist 0 -1 #通过 lrange 进行查看


  1. "hello3"

  2. "hello2"

  3. "hello1"


127.0.0.1:6379> lpop mylist # 移除 mylist 中第一个元素


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


(头部第一个)


"hello3"


127.0.0.1:6379> rpop mylist # 移除 mylist 尾部第一个元素


"hello1"


127.0.0.1:6379> lrange mylist 0 -1 # 再次通过 lrange 进行查看发现只剩一个


  1. "hello2"


  • lindex: 通过指定的下标来获取元素,下标从 0 开始


127.0.0.1:6379> lrange mylist 0 -1 # 对 mylist 中元素进行查看


  1. "hello1"

  2. "hello2"

  3. "hello3"


127.0.0.1:6379> lindex mylist 2 #获取下标为 2 的 list 中的元素


"hello3"


  • llen : 返回 list 列表的长度

  • lrem: 移除 list 列表中的指定元素,可以一次移除多个

  • ltrim: 相当于剪辑,获取指定范围的 list 的元素,其他元素将被移除


127.0.0.1:6379> lrange mylist 0 -1 #查看 mylist 中的元素


  1. "hello4"

  2. "hello3"

  3. "hello2"

  4. "hello1"


127.0.0.1:6379> llen mylist # 获取长度


(integer) 4


127.0.0.1:6379> lpush mylist hello1 # 为了测试 lrem 可以移除多个增加一个 hello1,list 是有序的,所以元素可以重复


(integer) 5


127.0.0.1:6379> lrange mylist 0 -1


  1. "hello1"

  2. "hello4"

  3. "hello3"

  4. "hello2"

  5. "hello1"


127.0.0.1:6379> lrem mylist 1 hello4 #移除 mylist 中值为 hello4 的元素,然后移除 1 个


(integer) 1


127.0.0.1:6379> lrange mylist 0 -1


  1. "hello1"

  2. "hello3"

  3. "hello2"

  4. "hello1"


127.0.0.1:6379> lrem mylist 2 hello1 #移除 mylist 中值为 hello1 的元素,然后移除 2 个


(integer) 2


127.0.0.1:6379> lrange mylist 0 -1


  1. "hello3"

  2. "hello2"


127.0.0.1:6379> rpush mylist hello1 # 为测试方便增加一个元素


(integer) 3


127.0.0.1:6379> lrange mylist 0 -1


  1. "hello3"

  2. "hello2"

  3. "hello1"


127.0.0.1:6379> ltrim mylist 0 1 #对 mylist 中的元素进行截取,截取第 0~1 个


OK


127.0.0.1:6379> lrange mylist 0 -1


  1. "hello3"

  2. "hello2"


  • rpoplpush : 返回并移除 list 中的最后一个元素,并把该元素加入到一个新的 list 中

  • lset : 通过指定的下标为 list 设置一个值,类似于 update,如果下标再 list 中不存在,或者 list 不存在都会报错

  • linsert : 给 list 再指定元素前或者后来插入一个元素


127.0.0.1:6379> lpush mylist hello1 hello2 hello3 #创建 mylist 并新增三个元素


(integer) 3


127.0.0.1:6379> lrange mylist 0 -1


  1. "hello3"

  2. "hello2"

  3. "hello1"


127.0.0.1:6379> rpoplpush mylist mylist1 # 将 mylist 中最后一个元素弹出,并增加到 mylist1 中,如果 mylist1 不存在则会创建


"hello1"


127.0.0.1:6379> lrange mylist 0 -1


  1. "hello3"

  2. "hello2"


127.0.0.1:6379> keys *


  1. "mylist"

  2. "mylist1"


127.0.0.1:6379> lrange mylist1 0 -1


  1. "hello1"


127.0.0.1:6379> lset mylist 0 xiec # 将下标为 0 的元素更新为 xiec


OK


127.0.0.1:6379> lrange mylist 0 -1


  1. "xiec"

  2. "hello2"


127.0.0.1:6379> linsert mylist before xiec lisi # 再 mylist 中再元素值为 xiec 的前面增加一个 lisi 元素


(integer) 3


127.0.0.1:6379> lrange mylist 0 -1


  1. "lisi"

  2. "xiec"

  3. "hello2"


Set 集合:set 和 list 最主要的区别和 java 集合类似,里面的元素无序,并且不可以重复




  • sadd: 用于创建一个 set 类型的 key-value 类型的键值对,并往里面增加一个或多个值

  • smembers : 查看一个 set 集合中的所有元素

  • sismember : 判断一个元素是否再 set 集合中,存在返回 1,不存在返回 0

  • scard : 获取 set 集合的长度


127.0.0.1:6379> sadd myset hello word xiec


(integer) 3


127.0.0.1:6379> smembers myset


  1. "xiec"

  2. "word"

  3. "hello"


127.0.0.1:6379> sismember myset xiec


(integer) 1


127.0.0.1:6379> scard myset


(integer) 3


  • srem: 移除 set 集合中一个具体的元素

  • srandmember : 从 set 集合中随机取出一个或多个值

  • spop : 随机从 set 集合中移除一个元素

  • smove : 从一个 set 集合中移动一个元素到另一个 set 集合中,如果另一个 set 集合不存在则会创建


127.0.0.1:6379> flushdb #为演示先清空数据库


OK


127.0.0.1:6379> sadd myset hello word xiec happy


(integer) 4


127.0.0.1:6379> srem myset hello # 从 myset 中移除值为 hello 的元素


(integer) 1


127.0.0.1:6379> smembers myset #查看 myset 中的元素


  1. "xiec"

  2. "word"

  3. "happy"


127.0.0.1:6379> srandmember myset # 从 myset 集合中随机取出一个值,并不会从 set 集合中删除


"word"


127.0.0.1:6379> smembers myset


  1. "xiec"

  2. "word"

  3. "happy"


127.0.0.1:6379> spop myset # 从 set 集合中随机选取一个元素并删除


"xiec"


127.0.0.1:6379> smembers myset


  1. "word"

  2. "happy"


127.0.0.1:6379> smove myset myset1 word # 将 myset 集合中的 world 元素移动到 myset1 中 myset1 不存在则会创建


(integer) 1


127.0.0.1:6379> keys *


  1. "myset1"

  2. "myset"


127.0.0.1:6379> smembers myset1


  1. "word"


  • sdiff : 计算两个集合的差集

  • sinter : 计算两个集合的交集

  • sunion : 计算两个集合的并集


127.0.0.1:6379> flushdb


OK


127.0.0.1:6379> sadd set1 a b c d


(integer) 4


127.0.0.1:6379> sadd set2 c d e f


(integer) 4


127.0.0.1:6379> sdiff set1 set2 # 差集,set1 减去 set2 剩下的就是 a,b


  1. "b"

  2. "a"


127.0.0.1:6379> sinter set1 set2 #交集,很容易理解,就是两个 set 集合的共同元素


  1. "d"

  2. "c"


127.0.0.1:6379> sunion set1 set2 #并集,就是把两个集合的所有元素


  1. "f"

  2. "b"

  3. "e"

  4. "a"

  5. "d"

  6. "c"


Hash:hash 和 String 的命令很类似,可以联合记忆,hash 的 value 是一个 map 集合。


====================================================================================================================


  • hset :设置一个 hash 类型的 key value

  • hget : 从 hash 的 map 中取出具体 key 的值

  • hmset : 和 String 类型的 mset 类似,这个可以批量设置 map 中的键值对

  • hmget : 同时获取多个 map 中多个 key 的 value


127.0.0.1:6379> hset myhash name xiec


(integer) 1


127.0.0.1:6379> hget myhash name


"xiec"


127.0.0.1:6379> hmset myhash age 23 sex nan


OK


127.0.0.1:6379> hmget myhash name age


  1. "xiec"

  2. "23"


  • hgetall : 获取一个 hash 中的全部元素,以 key-value 形式展示

  • hdel : 删除 hash 中的一个 key,删除时 value 也会同步删除

  • hlen : 获取 hash 中有多少个 key


127.0.0.1:6379> hset myhash name xiec


(integer) 1


127.0.0.1:6379> hget myhash name


"xiec"


127.0.0.1:6379> hmset myhash age 23 sex nan


OK


127.0.0.1:6379> hmget myhash name age


  1. "xiec"

  2. "23"


127.0.0.1:6379> hgetall myhash


  1. "name"

  2. "xiec"

  3. "age"

  4. "23"

  5. "sex"

  6. "nan"


127.0.0.1:6379> hdel myhash sex


(integer) 1


127.0.0.1:6379> hgetall myhash


  1. "name"

  2. "xiec"

  3. "age"

  4. "23"


127.0.0.1:6379> hlen myhash


(integer) 2


  • hexists : 判断 hash 中是否存在指定的 key,存在返回 1,不存在返回 0

  • hkeys : 获取 hash 中所有的 key(只有 key)

  • hvals : 获取 hash 中多有的 value(只获得所有的 value)


127.0.0.1:6379> hgetall myhash


  1. "name"

  2. "xiec"

  3. "age"

  4. "23"


127.0.0.1:6379> hexists myhash name


(integer) 1


127.0.0.1:6379> hkeys myhash


  1. "name"

  2. "age"


127.0.0.1:6379> hvals myhash


  1. "xiec"

  2. "23"


  • hincrby : 为 hash 中的某个 key 的 value 指定增加多少

  • hsetnx : 只有当 hash 中的那个 key 不存在时才会设置成功


127.0.0.1:6379> hgetall myhash


  1. "name"

  2. "xiec"

  3. "age"

  4. "23"


127.0.0.1:6379> hincrby myhash age 2


(integer) 25


127.0.0.1:6379> hsetnx myhash sex nan


(integer) 1


127.0.0.1:6379> hsetnx myhash sex nv


(integer) 0


Zset 集合:这个集合类型和 Set 集合很像,命令也大多类似,相比而言 Zset 多了 score 用来排序得字段




  • zadd :可以设置一个 zset 类型得键值对,可以一次为 zset 集合添加一个或多个值

  • zrange:用于查看 set 集合中得元素

  • zrangebyscore: 通过 score 字段排序 -inf 表示无穷小,+inf 表示无穷大


127.0.0.1:6379> zadd myset 10 xiec 20 zhangs 30 lisi # 其中 10,20,30 表示 score 字段


(integer) 3


127.0.0.1:6379> zrange myset 0 -1 # 查看 set 集合中全部元素


  1. "xiec"

  2. "zhangs"

  3. "lisi"


127.0.0.1:6379> zrangebyscore myset -inf +inf # 通过 score 字段从小到大排序,不展示 score


  1. "xiec"

  2. "zhangs"

  3. "lisi"


127.0.0.1:6379> zrangebyscore myset -inf +inf withscores # 加上 withscores 对 score 进行展示

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
Redis常用命令总结,java项目实例教程详细