当前位置:网站首页>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 zhangsanset zsage 20set totalRows 100
2.2.2 从redis中获取string类型的数据:get 键
get zsnameget zsageget 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
边栏推荐
- 微信小程序中给event对象传递数据
- sql语句优化,order by desc速度优化
- TCP packet sticking problem
- Unity粒子特效系列-闪星星的宝箱
- Pytorch extract middle layer features?
- Scratch epidemic isolation and nucleic acid detection Analog Electronics Society graphical programming scratch grade examination level 3 true questions and answers analysis June 2022
- Run xv6 system
- 78 year old professor Huake has been chasing dreams for 40 years, and the domestic database reaches dreams to sprint for IPO
- 关于这次通信故障,我想多说几句…
- F200——搭载基于模型设计的国产开源飞控系统无人机
猜你喜欢

Smart street lamp based on stm32+ Huawei cloud IOT design

Reppoints: advanced order of deformable convolution

10 advanced concepts that must be understood in learning SQL

Why should Li Shufu personally take charge of building mobile phones?

Interview assault 63: how to remove duplication in MySQL?

Pytest learning ----- pytest operation mode and pre post packaging of interface automation testing

2022年大厂Android面试题汇总(二)(含答案)

队列的实现

带你穿越古罗马,元宇宙巴士来啦 #Invisible Cities

基本磁盘与动态磁盘 RAID磁盘冗余阵列区分
随机推荐
高精度运算
MySQL 8 sub database and table backup database shell script
FMT开源自驾仪 | FMT中间件:一种高实时的分布式日志模块Mlog
adb常用命令
Compilation principle - top-down analysis and recursive descent analysis construction (notes)
node の SQLite
历史上的今天:Google 之母出生;同一天诞生的两位图灵奖先驱
Pytest learning ----- pytest operation mode and pre post packaging of interface automation testing
MSF horizontal MSF port forwarding + routing table +socks5+proxychains
EasyCVR平台通过接口编辑通道出现报错“ID不能为空”,是什么原因?
Jielizhi obtains the customized background information corresponding to the specified dial [chapter]
[Android] kotlin code writing standardization document
1700C - Helping the Nature
Jerry's watch reads the file through the file name [chapter]
编译原理——预测表C语言实现
中移动、蚂蚁、顺丰、兴盛优选技术专家,带你了解架构稳定性保障
C语言指针*p++、*(p++)、*++p、*(++p)、(*p)++、++(*p)对比实例
微信小程序获取手机号
kivy教程之在 Kivy 中支持中文以构建跨平台应用程序(教程含源码)
MSF横向之MSF端口转发+路由表+SOCKS5+proxychains