2. Redis 数据类型讲解

本文主要介绍了Redis中常见的数据类型,包括其键值对存储特性,以及针对键值的若干操作命令,如keys、expire、ttl等,旨在帮助读者理解Redis的数据结构和基本操作。
摘要由CSDN通过智能技术生成

Redis 众所周知存储的数据类型是key-value键值对,可以理解为 Map 数据结构,即使是下文讲到的这几种数据类型,可以理解为这几种类型就是存储的value。Redis存储的时候,一定需要存储 key 值,存储的对象最外层一定要是一个String来作为key值。如果读者知道Json数据格式的话,key-value存储就和它类似(说明的可能不太容易理解,下面实例讲解)

每个数据都有一个key值,无论存储的String,Hash表还是其他的数据,都需要对应一个可以,Redis有很多对key操作的命令。下面简单介绍几个常用的命令

  1. keys [key | patten] #查询key值目录
  2. expire key seconds #设置key的过期时间
  3. perxpire key milliseconds #设置key的过期时间,以毫秒为单位
  4. ttl key #获取key剩余的生命时间
  5. exists key #key是否存在
  6. persist key #移除设置在key上的过期时间,key不会过期
一、字符串 key
存储的数据为String字符串
简单介绍一下,存储String的命令。命令不区分大小写
1.set key value #存储
2.get key # 获取key对应的value值
3. append key value # 对不存在的 key 进行 APPEND ,等同于 SET key value
4.mset key-1 value-1 key-2 value-2 …… #批量存储key-value
5.mget key-1 key-2 …… #批量获取
6.msetnx key-1 value key-2 value …… #批量设置key-value值时检查key是否存在,只能存储 不存在的key
7.SETRANGE key offset value #覆写原来的字符串,从偏移量offset开始
这里写图片描述
此篇文章只是简单介绍Redis数据格式,命令列举的并不全面,后续文章会不断增加,敬请关注!
二、哈希表 hash
此数据类型可以说是Redis中最常用的了
hash存储的是key-value, 相当于Redis 中value值是一个hash表(key-value形式, 和Java中的HashMap类似的结构)
简单介绍几个常用命令
1.hset hash_key hkey hvalue #在hash表名为key中,增加一个键值对
2.hget hash_key hkey #获取名称为key的 hash表中键值为hkey的值
3.hmset hash_key hkey-1 value-1 hkey-2 value-2 …… #批量增加Hash表中的数据
4.hmget hash_key hkey-1 hkey-2 …… #批量获取
5.hexitsts hash_key #根据名称查看Hash表是否存在
6.hdel hash_key #根据名称删除Hash表
7.hgetall hash_key #根据名称获取Hash表中全部的key值
8.hvals hash_key #根据名称获取Hash表中全部的value值
这里写图片描述
hash表可以存储多个键值对数据,但是存储的数据只能是string-string键值对,并不能存储复杂的映射数据
上图中列举的一个Hash表数据,名称(key)为 hk1, 其中有四个数据,分别为hk1-hv1, hk2-hv2, hk3-hv3, k4-v4。
注意:Hash表中数据排序是根据键值的哈希算法来排序的,而 不是按照放入Hash表中的先后顺序,一个Hash表中的数据顺序仅仅只与键值有关,算出键值的hash值然后根据这个hash值排序。
三、列表 list
列表数据格式我觉得不用做太多的讲解了,最常见的一种数据结构。可以理解为队列或者栈数据结构,具体是栈还是队列就看个人怎么使用了。
简单介绍几个常用的命令
1.lpush list_key value-1 value-2 …… #队头插入数据
2.lpop list_key #取出一个数据(队头的一个数据)
3.lpushx list_key value #在队列头插入数据
4.linsert list_key BEFORE|AFTER pivot value #将值 value 插入到列表 list_key 当中,位于值 pivot 之前或之后,当 pivot 不存在于列表 key 时,不执行任何操作,当 key 不存在时, key 被视为空列表,不执行任何操作。
5.rpush list_key value1 value2 value3…… #队尾插入数据
6.rpop list_key #取出队尾的一个数据
7.rpoppush source destination #将source表尾的数据移动到destination表头,并返回此数据给客户端
8.lindex list_key index #根据下标返回列表中的数据
这里写图片描述
这里写图片描述 命令操作此处不贴更多的图了,自己多多练习实验吧。
四、集合 set
集合数据内部存储的是一些String数据,内部顺序是随机的。(其实也是按照某种算法计算出来的顺序,本人并没有深入了解)给大家看一下GUI的展现吧 这里写图片描述
可以看出来并不是按照字符串长度来排序,也不是按照字母大小排序,也不是按照插入顺序。
下面列举几个常用集合常用的命令
1.sadd set_key value-1 value-2…… #根据集合名词在集合中插入一个或多个值
2.scard set_key #获取集合中数据的个数
3.smembers set_key #获取一个集合中全部的成员
4.smove source destination member #将一个集合中的成员移动到另一个集合中
5.spop set_key #随机 返回并移除集合中一个成员
集合特点就是能简单的进行逻辑操作,例如:并集、交集、差集等,Redis具有这样的命令
1.sunion set-1 set2 ……. #计算给出的集合的并集,并返回成员
2.sdiff set-1 set-2 ……. #返回给定集合之间的差集
3.sdiffstore destination set-1 set-2…… #返回给定集合之间的差集,并保存到destination集合中
4.sinter set-1 set-2 ……#返回给定集合之间的交集
5.sinterstore destination set-1 set-2…… #返回给定集合之间的交集,并保存到destination集合中
五、有序集合 zset
有序集合和集合(set)的区别就在于成员的排序是自己定的,而不是Redis给计算的,在添加成员到一个有序集合中的时候,需要手动给这个成员设置一个序号(Redis中的称呼为score),然后这个集合中成员排序就根据序号从小至大排序
这里写图片描述
在此也简单介绍几个常用命令
1.zadd key score member [[score member] [score member] …] #设置序号并添加数据
2.zcard key #返回有序集合的成员数
3.zcount key min max #返回成员分数(序号)在min 和 max之间的个数
4.zrange key start stop #返回集合中分数在start 至 stop之间的成员
5.zrank key member #返回集合中所以成员及其分数(按照分数从小到大排序输出)
6.zrem key member [member …] #移除集合中一个或多个成员
7.zremrangebyscore key min max #移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员
8.zscore key member #返回有序集 key 中,成员 member 的 score 值
有序集合直接也可以进行集合逻辑运算,Redis也有常用的命令,在此文章中暂时不给列出了,后续有机会再讲解。
六、地理位置 geo GEO数据格式只有在 Redis版本大于3.2 才可以使用
个人认为GEO数据是一个三维的数据,为啥这么说呢,因为GEO中一条数据包含了至少三个信息:经度、纬度、名称,在存储一条数据的时候这三个关键值必须都有,不然不能存储。
GEO : [
{ longitude : double,
latitude : double,
member: string },
{ longitude : double,
latitude : double,
member: string }
]
数据格式如上所示
在此也列出常用的几个命令
1.geoadd key longitude latitude member [longitude latitude member …]
#将给定的空间元素(纬度、经度、名字)添加到指定的键里面
2.geopos key member [member …] #从键里面返回所有给定位置元素的位置(经度和纬度)
3.geodist key member1 member2 [unit] #返回两个给定位置之间的距离。unit为单位: m, km, mi, ft
4.georadius key longitude latitude radius m|km|ft|mi
#以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

此文章简单介绍了Redis的存储数据结构,常用的数据操作命令,如果看官想了解更多的命令,给您推荐一个链接 Redis命令参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值