当前位置:网站首页>Redis的五种数据结构
Redis的五种数据结构
2022-07-06 10:08:00 【848698119】
1. Redis的五种数据结构
Redis 可以存储键和五种不同类型的值之间的映射。
键
的类型只能为字符串
,值支持五种数据类型
:字符串、列表、集合、散列表、有序集合。
程序是用来处理数据的,redis是用来存储数据的,程序处理完的数据要存储到redis中,不同特点的数据要存储在redis中不同类型的数据结构中。
字符串: 单key: 单value
list列表: 有序可重复 单key: 多有序value(这里的有序指的是输入和输出的顺序)
set集合: 无序不可重读 单key: 多个无序value
pojo hash 单key : 对象(属性:值)
zset 单key: 多有序value(这里的有序指的是排序)
- 字符串类型String
字符串类型是Redis中最基本的数据结构,它能存储任何类型的数据,包括二进制数据,序列化后的数据,JSON化的对象甚至是一张图片。最大512M。
- 列表类型list
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),底层是个链表结构。
- 集合类型set
Redis 的Set是 string 类型的无序无重复集合。
- 哈希类型hash
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
- 有序集合类型zset (sorted set)
Redis有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。
不同的是zset 的每个元素都会关联一个分数(分数可以重复),redis通过分数来为集合中的成员进行从小到大的排序。
是实现了sortedset接口的TreeSet集合,利用比较器实现排序
2. redis中的操作命令
redis中存储的Key-Value
2.1 redis中有关key的操作命令:
2.1.1 查看数据库中所有的key : keys pattern
作用:查找所有符合模式pattern的 key。 pattern可以使用通配符通配符:*
:表示0或多个
字符,例如: keys*查询所有的 key。?
:表示单个
字符,例如: wo?d,匹配word , wood[]
:表示选择[]内的一个字符,例如 wo[or]d,匹配word, wood,不匹配wold、woord
keys *
: 查看数据库实例中所有的keykeys k*
:查看数据中所有以k开头的keykeys h*o
:查看数据中所有以h开头以o结尾的key
keys h[abc]llo
:查看数据中所有以h开头以llo结尾,并且h后边只能取abc中的一个字符的key
2.1.2 判断key在数据库中是否存在:exists key
exists key
如果存在,返回1;如果不存在,则返回0
exists key [key key .....]
返回值是存在的可以的数量
2.1.3 移动指定key到指定的数据库实例: move key index
move k 1
用的很少,一般情况下,一个数据库实例对应一个项目,这种转移key到另外一个数据库实例中用的很少
2.1.4 查看指定key的剩余生存时间:ttl
time to livettl k1
查看k1的剩余生存时间
如果k1不存在返回-2.
如果k1没有设置生存时间返回-1,只要不宕机数据一直存在
2.1.5 设置key的最大生存时间:expire key seconds
expire k2 20
给k2设置生存时间20s,,,到时间数据消失
2.1.6 查看指定key的数据类型 type key
type k1
返回当前数据类型
2.1.7 重命名key: rename key newkey
rename k1 k2
把k1更改为k2,,,值不变只是重命名了key
2.1.8 删除key : del key
del key
删除指定key的数据,返回值是实际删除key的数量
也可以删除多个数据del k1 k2 k3 ....
删除多条数据
2.2 redis中有关String数据类型的操作命令
2.2.1 将string类型的数据设置redis中:set 键 值
set zsname zhangsan
set zsage 20
set totalRows 100
2.2.2 从redis中获取string类型的数据:get 键
get zsname
get zsage
get totalRows
2.2.3 追加字符串:append key value
set phone 1388888
添加key-valueappend phone 6666
在key=phone的值中追加6666,返回追加之后的字符串长度
如果key不存在,则创建key-value
2.2.4 获取字符串数据的长度:strlen key
strlen phone
获取字符串的长度
2.2.5 将字符串值进行加1运算:incr key
incr zsage
将张三的年龄值加1 ,返回加1运算之 后的值
如果key不存在,首先设置一个key,值初始化为0,然后进行incr运算
要求key所表示value必须是数值,否则,报错
incr zsname 报错
2.2.6 将字符串数值进行减1运算:decr key
- 返回减1运算之后的数据
- 如果key不存在,首先设置一个key,值初始化为0,然后进行decr运算。
- 要求key所表示value必须是数值,否则,报错
2.2.7 将字符串数值进行加offset运算:incrby key offset
incrby key offset
- 返回加offset运算之后的数据
- 如果key不存在,首先设置一个key,值初始化为0,然后进行incrby运算。
- 要求key所表示value必须是数值,否则,报错
incrby zsage 10
对张三数据进行加10运算,
2.2.8 将字符串数值进行减offset运算:decrby key offset
- 返回加offset运算之后的数据
- 如果key不存在,首先设置一个key,值初始化为0,然后进行decrby运算。
- 要求key所表示value必须是数值,否则,报错
decrby zsage 10
对张三数据进行减10运算
2.2.9 闭区间截取字符串:getrange key startIndex endIndex
截取下标是从0开始,闭区间截取
从左往右下标是0,1,2,3…
从右往左下标是-1,-2,-3 …
zhangsangetrange zsname 2 3
返回结果是an
gettrange zsname 2 -3
返回结果 angs
2.2.10 用value覆盖从下标为startIndex开始的字符串:setrange key startIndex value
zhangshansetrange zsname 5 xiaoming
修改之后的数据为zhangxiaoming
边栏推荐
- FlutterWeb瀏覽器刷新後無法回退的解决方案
- EasyCVR接入设备开启音频后,视频无法正常播放是什么原因?
- Mysqlimport imports data files into the database
- 酷雷曼多种AI数字人形象,打造科技感VR虚拟展厅
- 2019阿里集群数据集使用总结
- HMS core machine learning service creates a new "sound" state of simultaneous interpreting translation, and AI makes international exchanges smoother
- Codeforces Round #803 (Div. 2)
- 分布式不来点网关都说不过去
- Unity小技巧 - 绘制瞄准准心
- 重磅!蚂蚁开源可信隐私计算框架“隐语”,主流技术灵活组装、开发者友好分层设计...
猜你喜欢
酷雷曼多种AI数字人形象,打造科技感VR虚拟展厅
Alibaba brand data bank: introduction to the most complete data bank
node の SQLite
EasyCVR电子地图中设备播放器loading样式的居中对齐优化
node の SQLite
In terms of byte measurement with an annual salary of 30W, automated testing can be learned in this way
Summary of Android interview questions of Dachang in 2022 (I) (including answers)
中移动、蚂蚁、顺丰、兴盛优选技术专家,带你了解架构稳定性保障
Olivetin can safely run shell commands on Web pages (Part 1)
李书福为何要亲自挂帅造手机?
随机推荐
Jerry's access to additional information on the dial [article]
分布式不来点网关都说不过去
一体化实时 HTAP 数据库 StoneDB,如何替换 MySQL 并实现近百倍性能提升
Distinguish between basic disk and dynamic disk RAID disk redundant array
Getting started with pytest ----- test case rules
Jielizhi obtains the currently used dial information [chapter]
Today in history: the mother of Google was born; Two Turing Award pioneers born on the same day
Zen integration nails, bugs, needs, etc. are reminded by nails
Summary of Android interview questions of Dachang in 2022 (II) (including answers)
MSF横向之MSF端口转发+路由表+SOCKS5+proxychains
在一台服务器上部署多个EasyCVR出现报错“Press any to exit”,如何解决?
RepPoints:可形变卷积的进阶
面试突击62:group by 有哪些注意事项?
declval(指导函数返回值范例)
VR panoramic wedding helps couples record romantic and beautiful scenes
Summary of Android interview questions of Dachang in 2022 (I) (including answers)
容器里用systemctl运行服务报错:Failed to get D-Bus connection: Operation not permitted(解决方法)
Jerry's watch reading setting status [chapter]
Flet教程之 13 ListView最常用的滚动控件 基础入门(教程含源码)
Scratch epidemic isolation and nucleic acid detection Analog Electronics Society graphical programming scratch grade examination level 3 true questions and answers analysis June 2022