当前位置: 首页 > article >正文

Redis五种基本数据结构的使用

Redis具有五种基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、SortedSet(有序集合),下面示意它们的使用。

String类数据类型的使用
增:添加数据(set)、添加多个数据(mset)、添加数据时指定过期时间(setex) ​
删:删除数据(del) ​
改:追加字符串(append)、自增(incr)、自减(decr)、增加指定值(incrby) ​
查:获取数据(get)、查询多个数据(mget) 、strlen返回字符串长度(strlen)

127.0.0.1:6379> set name Jacob #创建一个key为‘name’,value为‘Jacob’的数据
OK #成功,返回OK
127.0.0.1:6379> get name #获取key为‘name’数据的value值
"Jacob" #返回结果
127.0.0.1:6379> strlen name #获取key为‘name’数据的长度
(integer) 5
127.0.0.1:6379> append name Tan #追加key为‘name’数据,value值加上‘Tan’
(integer) 8
127.0.0.1:6379> get name
"JacobTan"
127.0.0.1:6379> set num 0 #设置key为‘num’,value为‘0’的数据
OK
127.0.0.1:6379> get num	#获取key为‘num’的数据,它的value值
"0"
127.0.0.1:6379> incr num #自增key为‘num’的数据,每次加1
(integer) 1
127.0.0.1:6379> get num
"1"
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> get num
"2"
127.0.0.1:6379> decr num #自减key为‘num’的数据
(integer) 1
127.0.0.1:6379> get num
"1"
127.0.0.1:6379> incrby num 10 #增加key为‘num’数据的value值,每次加10
(integer) 11
127.0.0.1:6379> get num
"11"
127.0.0.1:6379> ttl num #查看key为‘num’的数据的过期时间,默认数据永不过期。
(integer) -1 #-1代表永不过期
127.0.0.1:6379> setex university 5 NEU #设置key为‘university’,value为‘NEU’的数据过期时间为5秒
OK
127.0.0.1:6379> keys * #查看redis的所有key值
1) "num"
2) "university"
3) "name"
127.0.0.1:6379> keys *
1) "num"
2) "name"
127.0.0.1:6379> mset age 24 province JX #mset命令可以一次设置多个key-value数据
OK
127.0.0.1:6379> mget age province #mget可以一次性获取多个key对应的value
1) "24"
2) "JX"
127.0.0.1:6379> keys *
1) "num"
2) "province"
3) "name"
4) "age"

Hash数据类型的使用
​增:添加数据(hset)、添加多条数据(hmset)、不存在元素则添加(hsetnx)
​删:删除特定的key对应的value(hdel)
​改:给特定的key值对应value增加数值(hincrby)
查:获取hash的所有字段(hgetall)、获取特定的key值对应value(hget)、获取hash表长度(hlen)、查看hash中是否存在特定的key值对应的数据(hexists)、查看hash表所有key值(hkeys)、查看hash表所有value值(hvals)。 

127.0.0.1:6379> hmset myhash name Jacob age 20 province LN country China #hmset 是创建key为‘myhash’的数据,value为hash表,name,age,province和country为hash表中的key,后面跟着的是对应的value值。
OK 
127.0.0.1:6379> hgetall myhash #获取key为‘myhash’的所有字段,包括key和value
1) "name"
2) "Jacob"
3) "age"
4) "20"
5) "province"
6) "LN"
7) "country"
8) "China"
127.0.0.1:6379> hget myhash name #获取myhash中key为‘name’的value
"Jacob"
127.0.0.1:6379> hdel myhash del country #删除myhash中key为‘country’的数据
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "name"
2) "Jacob"
3) "age"
4) "20"
5) "province"
6) "LN"
127.0.0.1:6379> hlen myhash #获取myhash这个hash表的数据长度
(integer) 3
127.0.0.1:6379> hexists myhash name #判断myhash中是否存在key为‘name’的数据
(integer) 1
127.0.0.1:6379> hkeys myhash #查看myhash中的所有key值
1) "name"
2) "age"
3) "province"
127.0.0.1:6379> hvals myhash #查看myhash中的所有value值
1) "Jacob"
2) "20"
3) "LN"
127.0.0.1:6379> hincrby myhash age 4 #myhash中的key为‘age’的数据value增加4
(integer) 24
127.0.0.1:6379> hsetnx myhash name tt #myhash中如果存在‘name’字段取消,不存在则执行添加命令
(integer) 0
127.0.0.1:6379> hgetall myhash
1) "name"
2) "Jacob"
3) "age"
4) "24"
5) "province"
6) "LN"

​List数据类型的使用

增:左增 (lpush)、 右增(rpush)、前插入(linsert key before pivot insertValue)、后插入(linsert key after pivot insertValue)、获取最后元素加入新的列表(rpoplpush oldList newList)
删:按值删除 (lrem key count value)
改:更改值(lset key index newValue)
查:按索引范围查 (lrange key start stop) 、按索引查(lindex key index)、从左边弹出(lpop)、从右边弹出(rpop)长度相关:获取长度(llen)、按索引截取保留部分(ltrim key start stop)

127.0.0.1:6379> lpush  mylist 1,2,3,4,5 #创建一个key为mylist的列表,左增一个元素
(integer) 1
127.0.0.1:6379> lrange mylist 0 -1 #查看mylist的所有元素
1) "1,2,3,4,5"
127.0.0.1:6379> rpush mylist -1 #在mylist中,右增一个元素-1
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
1) "1,2,3,4,5"
2) "-1"
127.0.0.1:6379> lpush mylist -2
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "-2"
2) "1,2,3,4,5"
3) "-1"
127.0.0.1:6379> lpop mylist #弹出mylist中左边第一个元素
"-2"
127.0.0.1:6379> lrange mylist 0 -1
1) "1,2,3,4,5"
2) "-1"
127.0.0.1:6379> rpop mylist #弹出mylist右边第一个元素
"-1"
127.0.0.1:6379> lrange mylist 0 -1
1) "1,2,3,4,5"
127.0.0.1:6379> lindex mylist 0 #获取mylist中索引0的数据
"1,2,3,4,5"
127.0.0.1:6379> llen mylist #获取mylist的长度
(integer) 1
127.0.0.1:6379> lrem mylist 1 1,2,3,4,5 #移除mylist中‘1,2,3,4,5’元素1个
(integer) 1
127.0.0.1:6379> lrange mylist 0 -1
(empty list or set)
127.0.0.1:6379> lpush mylist 1 2 3 4 5 #在mylist中左增多个元素
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> ltrim mylist 1 2 #截取mylist中索引1到2的部分保留
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "4"
2) "3"
127.0.0.1:6379> lset mylist 1 5 #更改mylist中索引1位置的元素为5
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "4"
2) "5"
127.0.0.1:6379> rpoplpush mylist mylist2 #将mylist中最后一个元素加入一个新的列表mylist2中
"5"
127.0.0.1:6379> lrange mylist2 0 -1
1) "5"
127.0.0.1:6379> lrange mylist 0 -1
1) "4"
127.0.0.1:6379> linsert mylist before 4 3 #在mylist的元素值为4前插入3
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
1) "3"
2) "4"
127.0.0.1:6379> linsert mylist after 4 5 #在mylist的元素值为4后插入元素5
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "3"
2) "4"
3) "5"

Set数据类型的使用

​增:添加元素(zadd)
删:删除指定元素(srem key data)、随机删除元素(spop)
​改:移动指定元素到新集合(smove oldSet newSet data)
​查:查看所有元素(smembers)、查看某一元素是否存在(sismember)、查看长度(scard)
​集合操作:差集(sdiff set1 set2)、交集(sinter set1 set2)、并集(sunion set1 set2)

127.0.0.1:6379> sadd myset a b c c d #创建一个key为myset的集合,添加a,b,c,d四个元素
(integer) 4
127.0.0.1:6379> smembers myset #查看myset中的元素
1) "a"
2) "d"
3) "c"
4) "b"
127.0.0.1:6379> sismember myset a #查看a是否在myset中
(integer) 1
127.0.0.1:6379> scard myset #查看myset的长度
(integer) 4
127.0.0.1:6379> srem myset a #移除myset中的元素a
(integer) 1
127.0.0.1:6379> smembers myset 
1) "d"
2) "c"
3) "b"
127.0.0.1:6379> srandmember myset #随机获取myset中的一个元素
"d"
127.0.0.1:6379> srandmember myset
"d"
127.0.0.1:6379> srandmember myset
"c"
127.0.0.1:6379> 
127.0.0.1:6379> spop myset #随机删除myset中的元素
"d"
127.0.0.1:6379> smembers myset
1) "c"
2) "b"
127.0.0.1:6379> smove myset myset1 c #将元素c从myset中移动到myset1中
(integer) 1
127.0.0.1:6379> smembers myset1
1) "c"
127.0.0.1:6379> keys *
 1) "num"
 2) "province"
 3) "num1"
 4) "myhash"
 5) "myset1"
 6) "age"
 7) "lpush"
 8) "myset"
 9) "mylist2"
10) "name"
11) "mylist"
127.0.0.1:6379> sadd myset a c d e
(integer) 4
127.0.0.1:6379> smembers myset
1) "a"
2) "d"
3) "c"
4) "b"
5) "e"
127.0.0.1:6379> sadd myset1 a c e f b
(integer) 4
127.0.0.1:6379> smembers myset1
1) "f"
2) "e"
3) "a"
4) "c"
5) "b"
127.0.0.1:6379> sdiff myset myset1 #求解myset和myset1的差集
1) "d"
127.0.0.1:6379> sdiff myset1 myset
1) "f"
127.0.0.1:6379> sinter myset myset1 #求解myset与myset1之间的交集
1) "e"
2) "a"
3) "b"
4) "c"
127.0.0.1:6379> sunion myset myset1 #求解myset与myset1之间的并集
1) "f"
2) "e"
3) "a"
4) "d"
5) "b"
6) "c"

zSet数据类型的使用

​ 增:添加数据(zadd)
​ 删:删除数据(zrem)
​ 查: 按从大到小的顺序(zrevrange)排列、按从小到大的顺序排列(zrangebyscore)、查看元素个数(zcard)、查询值在指定区间的个数(zcount key min max)

127.0.0.1:6379> zadd myzset 1 one 2 two 3 three #添加一个key为myzset的有序集合,one赋予1分,two赋予2分,three赋予3分
(integer) 3
127.0.0.1:6379> zrange myzset 0 -1 #查看myzset的所有元素
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrangebyscore myzset -inf +inf #让myzset中元素从小到大排序
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrange myzset 0 -1 
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrevrange myzset 0 -1 #myzset中元素从大到小排序
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrem myzset one #移除myzset中的元素one
(integer) 1
127.0.0.1:6379> zrevrange myzset 0 -1
1) "three"
2) "two"
127.0.0.1:6379> zcard myzset #统计myzset中元素的个数
(integer) 2
127.0.0.1:6379> zcount myzset 1 1 #统计myzset中值为1的个数
(integer) 0
127.0.0.1:6379> zcount myzset 1 2
(integer) 1

http://www.kler.cn/news/316652.html

相关文章:

  • ARM/Linux嵌入式面经(三四):CVTE
  • U盘格式化了怎么办?这4个工具能帮你恢复数据。
  • maxwell 输出消息到 kafka
  • 核心复现—计及需求响应的区域综合能源系统双层优化调度策略
  • 南大通用数仓-GCDW-学习-03-用户管理
  • 工业级5口485中继器通讯光电隔离防雷RS232HUB分共享分割器RS485集线器
  • 基于MySQL的数据库课程设计详解
  • 笔记整理—内核!启动!—linux应用编程、网络编程部分(4)linux文件属性
  • ruoyi-vue若依前端是如何防止接口重复请求
  • 计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-19
  • 【Linux 20】线程控制
  • Facebook开发者篇 - API拉取广告投放数据对接流程
  • D. Minimize the Difference (Codeforces Round 973 Div. 2)
  • 【人工智能学习笔记】7_智能语音技术基础
  • 【自定义函数】讲解
  • 香港科技大学广州|金融科技学域博士招生宣讲会——武汉大学、华中科技大学
  • 【算法】遗传算法
  • go语言基础入门(一)
  • 安全带检测系统源码分享
  • ArcGIS Pro SDK (十六)公共设施网络 2 网络图
  • MySQL篇(高级字符串函数/正则表达式)(持续更新迭代)
  • Web端云剪辑解决方案,BS架构私有化部署,安全可控
  • 【ARM】A64指令介绍及内存屏障和寄存器
  • 借用连接1-怎么从目标数据源借用连接
  • 【题解-力扣189. 轮转数组(java实现O(1)空间要求)】
  • Python3爬虫教程-HTTP基本原理
  • 数据结构--单链表创建、增删改查功能以及与结构体合用
  • Java 入门指南:JVM(Java虚拟机)—— 双亲委派模型(Parent Delegation Model)
  • 2024短剧系统开发,付费短剧小程序app源码教程,分销功能讲解搭建上线
  • 【UI自动化】前言