Redis中集合的使用

Redis的基本使用

在windows下使用

  • 需要在终端切换到redis文件中:D:\redis\Redis-x64-5.0.10
  • 使用 redis-server.exe redis.windows.conf 命令开启redis服务器
  • 打开我们的客户端即可使用了

命令

redis是采用key-value存储的,所以我们可以通过key获取到我们的值

String字符串类型

字符串类型不需要添加双引号,redis会自动识别数据类型

  • set key value : set name jiangt
    设置键值对
  • get key ; get name
    返回:jiangt;通过key拿到我们的value
  • append key value:append name 123
    在key为name的value中拼接字符串,这样name的value为:jiangt123
  • type key:type name
    返回:String
    判断当前key的数据类型
  • exists key :exists name
    是否存在当前key,返回: 1(存在) , 0(不存在)
  • keys *
    返回本数据库的所有key,
  • select 7
    redis默认有16个数据库,通过此命令切换数据库,下标从0开始,所以当前切换的是6号数据库
  • flushdb 7
    清空当前数据库的数据
  • flushall
    清空所有数据库的数据,16个数据库的数据全部清除
List列表类型

在redis中,我们可以将list完成栈、队列、阻塞队列

所有的list命令都是用 l 开头的
取出是从队头开始算下标取出,添加两边都可以添加

  • lpush :从队头开始添加元素,随着元素的增多,前元素会往队尾靠近
    在这里插入图片描述
    从对头开始添加元素,随着元素增对,所以第一个元素就会往队尾靠近,所以当前list中的第一个元素为3

  • rpush:从队尾开始添加元素,随着元素的增多,前元素会往队头靠近

在这里插入图片描述
从队尾开始添加元素,随着元素的增多,第一个元素1就会往队头靠近,所以当前list中的第一个元素为1
插入

  • LPUSH list one
    将一个值或者多个值,插入到list头部

  • LRANGE list 0 -1
    取出全部的值 LRANGE:取值 0 -1:全部的值

  • RPUSH list ranght
    将一个值或者多个值,插入到list尾部

在上图可以看出,我们在list中先存入的是 one two 按道理取0 1 应该是这两个值
但是却是 three two
这是因为当前list是先进后出的单链表,当然也可以想象成栈
移除
在这里插入图片描述
在当前list中,因为是先进后出,所以第一个元素是three

移除指定的值
在这里插入图片描述
这里是根据value来移除指定的值
当list中两个相同的value时
在这里插入图片描述
执行lem list 1 three :删除一个指定value时,当时当前list中有两个value,目前猜想是在根据list头部删除第一个value为three的值

下标取值
在这里插入图片描述
在当前list中,因为是先进后出,所以下标0是two LINDEX:通过下标获得list中的某个值

获取长度
在这里插入图片描述

Llen list :获取当前list长度

截取list
在这里插入图片描述
ltrim mylist 1 2:截取当前list中下标为1 2 的值,同时也只保存截取的值,其它值都被移除了
注:这里用的Rpush 从尾部开始插入,所以此时list的排序应该是:

		hello
		hello1
		hello2
		hello3

将集合队尾的第一个元素移除到另一个对头的第一个元素
在这里插入图片描述
rpoplpush:将集合队尾的第一个元素移除到另一个对头的第一个元素
rpoplpush list mylist: list:操作源 mylist:目的源
注:如果当前数据库中没有mylist这个目的源时,redis会自动创建一个名为mylist的目的源

替换指定下标的值
在这里插入图片描述
lset mylist 2 test 0 -1 :mylist(操作源) 2:操作员中的下标 test:所要替换的值
注:如没有当前的mylist,执行lset操作会报错,如果存在则会更新当前下标值

插入值
在这里插入图片描述
linsert mylist before “test” world

  1. linsert :插入指令
  2. mylist:操作源
  3. before ”test“ :在test字符前插入
  4. world:要插入的值

在这里插入图片描述
当list中有两个test字符时,再执行插入语句
linsert mylist after “test” mytest
redis会在第一个test后面插入,因为redis中的出口只有一个,所以在找到第一个test后就会执行语句

Set(无序集合)

set中的值不能重复
添加及查询所有值
在这里插入图片描述
Sadd myset hello:

  1. Sadd:添加指令
  2. myset:集合名 数据库没有时,会自动创建
  3. hello:要添加的值

Smembers myset:查询set集合中的所有值

  1. Smembers : 查询所有指令
  2. myset:要查询的集合名

包含
在这里插入图片描述
Sismember myset hello:myset集合是否包含此元素

  1. Sismember:包含指令 返回值 1:包含 0:不包含
  2. myset:操作源
  3. hello:具体元素

获取set集合中的元素的个数
在这里插入图片描述
移除元素
在这里插入图片描述
Srem myset hello:移除元素

  1. Srem:移除指令
  2. myset:操作源
  3. hello:要移除的元素

随机取元素
在这里插入图片描述
srandmember myset 2:随机抽取集合元素

  1. Srandmember:随机抽取元素指令
  2. myset:操作源
  3. 2:要抽取的元素的个数,不写则默认抽取1个元素

随机移除元素
在这里插入图片描述
Spop myset:随机移除元素

  1. Spop:随机移除指令
  2. myset:操作源

将指定的值,移动到另一个set集合中
在这里插入图片描述
Smove myset myset1 2:将指定的值,移动到另一个set集合中

  1. Smove:指令
  2. myset:操作源
  3. myset1:目的源 当目的源没有时,redis会自动创建
  4. 2:要操作的元素

差集
差集:两个集合不相同的部分
在这里插入图片描述
Sdiff key1 key2:差集
注:返回的值以第一个集合的为准,即返回第一个集合的元素,而这些元素是与第二个集合的元素不同的

交集
交集:两个集合相同的部分
在这里插入图片描述
Sinter key1 key2:交集
返回值为两个集合相同的元素

并集
在这里插入图片描述
Sunion key1 key2:并集
返回值为两个集合的和,但是当两个集合的元素相同,就只返回一个元素,不会都返回

Zset(有序集合)

之前的set集合都是集合名加具体的值,如
在这里插入图片描述
而Zset是在集合中的value前的加个Integer的值,redis会根据这个值进行排序,如
在这里插入图片描述
按scopre排序
在redis中,Zset会默认升序排序,当我们只需要区间时,可以这样做
在这里插入图片描述
Zrangebyscore myzst 1 2:
1 2 :会根据myzst的score值进行筛选
+inf:正无穷
-inf:负无穷

其他操作与set集合无异

Hash(哈希)

这一块可以比较难理解
可以想象成map集合,之前存储都是key-value,现在是key-map
而map集合里又有key-value

添加值与取出值
在这里插入图片描述
hset myhash key1 test1:添加值

  1. hset:添加指令
  2. myhash:相当于 key-map中的key
  3. key1 test1:相当于 key-map中的map,是一条数据
  4. key1:相当于 key-map中的 map的key
  5. test1:相当于 key-map中的map的value

hgetall myhash:根据key-map中的key取出map

  1. myhash:相当于 key-map中的key
  2. 返回的是整个map集合,会将整个map的key-value都返回

注:当key-map中的key-value中的key重复时,后面写的会覆盖掉前面写的
在这里插入图片描述

上图可以看出,在当前hash中的map的key1的值为test1,但是当我们插入重复的key时,后面的覆盖掉了前面的值

hget myhash key1:获取当前key-map中map的key的值

  1. hget:获取指令
  2. myhash :key-map中的key
  3. key1:相当于 key-map中的 map的key
  4. 返回的是当前的map中的key所对应的value值

获取key-map中的多个key的值
在这里插入图片描述

hmget myhash key1 key2:

  1. hmget:获取多个map中的key的值
  2. myhash :key-map中的key
  3. key1:相当于 key-map中的 map的key
  4. key2:相当于 key-map中的 map的key
  5. 返回的是多个map中的key的值

目前hmset已被官方弃用,建议使用hset

删除hash中map的指定key
在这里插入图片描述
hdel myhash key1:删除hash中map的指定key

  1. hdel :删除hash中map的指定key指令
  2. myhash :key-map中的key
  3. key1:相当于 key-map中的 map的key

获取hash中map的数据
在这里插入图片描述
hlen myhash

  1. hlen:获取hash中map的数据指令
  2. myhash :key-map中的key
  3. 返回的是map中的key-value的个数

判断hash中map的key是否存在
在这里插入图片描述
hexists myhash key1

只获得所有map中的key
在这里插入图片描述
hkeys myhash:

  1. hkeys :只获得所有map中的key指令
  2. myhash :key-map中的key

只获得所有map中value
在这里插入图片描述

  1. hvals :只获得所有map中value指令
  2. myhash :key-map中的key

指定增量
在这里插入图片描述
我们在之前设定了一个key1,value为Integer类型的2,使用指令后边让它相加了

hincrby myhash key1 1:指定增量

  1. hincrby :指定增量指令
  2. myhash :key-map中的key
  3. key1:相当于 key-map中的 map的key
  4. 1:当为正数时则相加 为负数时则相减

注:只有当map中的value为Integer类型时,才会进行增量或者减量,否则会报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值