Redis的五种数据结构如下:
对于redis,所有的键都是字符串。
1.字符串字符串类型
是redis中最基本的数据类型,一个键对应一个值。
字符串类型是二进制安全的,这意味着redis的字符串可以包含任何数据。如数字、字符串、jpg图片或序列化对象。
使用:get、set、del、incr、decr等。
127.0.0.1:6379>set hello worldOK127.0.0.1:6379>get hello"world"127.0.0.1:6379>del hello(integer) 1127.0.0.1:6379>get hello(nil)127.0.0.1:6379>get counter"2"127.0.0.1:6379>incr counter(integer) 3127.0.0.1:6379>get counter"3"127.0.0.1:6379>incrby counter 100(integer) 103127.0.0.1:6379>get counter"103"127.0.0.1:6379>decr counter(integer) 102127.0.0.1:6379>get counter"102"
实战场景:
1.缓存:在经典的使用场景下,常见的信息、字符串、图片或视频放入redis,redis作为缓存层,mysql作为持久层,减轻mysql的读写压力。
2.反驳:redis是单线程模型。执行完一个命令后,将执行下一个命令。同时,数据可以一步落地到其他数据源。
3.session:常用方案spring session+redis实现会话共享,
2.哈希(哈希)
是Map***p,也就是说值本身是一个键值对结构,比如value={{field1,value1},……fieldN,valueN}}
使用:所有hash命令都是hget,hset,hdel等。以h开头的。
127.0.0.1:6379>hset user name1 hao(integer) 1127.0.0.1:6379>hset user e***il1 hao@163.com(integer) 1127.0.0.1:6379>hgetall user1) "name1"2) "hao"3) "e***il1"4) "hao@163.com"127.0.0.1:6379>hget user user(nil)127.0.0.1:6379>hget user name1"hao"127.0.0.1:6379>hset user name2 xiaohao(integer) 1127.0.0.1:6379>hset user e***il2 xiaohao@163.com(integer) 1127.0.0.1:6379>hgetall user1) "name1"2) "hao"3) "e***il1"4) "hao@163.com"5) "name2"6) "xiaohao"7) "e***il2"8) "xiaohao@163.com"
实战场景:
1.缓存:可以很直观,比string节省空时间,可以维护缓存的信息,比如用户信息,视频信息等。
3.链表
说白了,List就是一个链表(redis用双头链表实现的List)。它是有序的,值可以重复。对应的值可以通过下标取出,两边都可以插入和删除数据。
使用列表的技巧
lpush+lpop=Stack(栈)lpush+rpop=Queue(队列)lpush+ltrim=Capped Collection(有限***)lpush+brpop=Message Queue(消息队列)
使用:
127.0.0.1:6379>lpush mylist 1 2 ll ls mem(integer) 5127.0.0.1:6379>lrange mylist 0 -11) "mem"2) "ls"3) "ll"4) "2"5) "1"127.0.0.1:6379>
实战场景:
1 .时间轴:比如微博的时间轴,有人发微博,在时间轴上加了lpush,显示新的列表信息。
4.******
类型也是用于存储多个字符串的元素,但与列表不同的是,1。***2中不允许有重复的元素。***中的元素顺序错误,无法通过索引下标3获取元素。支持***之间的运算,可以选择多个***获得交、并、差***。
用法:以S开头的命令有sset、srem、scard、***embers、si***ember..
127.0.0.1:6379>sadd myset hao hao1 xiaohao hao(integer) 3127.0.0.1:6379>SMEMBERS myset1) "xiaohao"2) "hao1"3) "hao"127.0.0.1:6379>SISMEMBER myset hao(integer) 1
实战场景;
1.标签,给用户添加标签,或者用户给消息添加标签,让有相同标签或者相似标签的人推荐关注的事情或者人。
2.喜欢,或者点击,收藏等。,可以放入***中实现。
5.zset有序集
有序集与***之间有着必然的联系,这种联系保持了***不能有重复成员的特征。不同的是,有序***中的元素是可以排序的,它为每个元素设置一个分数作为排序的依据。
(有序***中的元素不能重复,但是分数可以重复,就像一个班级的学号不能重复,但是***分数可以一样)。
命令使用:ordered set all以z zadd,zrange,zscore开始。
127.0.0.1:6379>zadd myscoreset 100 hao 90 xiaohao(integer) 2127.0.0.1:6379>ZRANGE myscoreset 0 -11) "xiaohao"2) "hao"127.0.0.1:6379>ZSCORE myscoreset hao"100"
实战场景:
1.排行榜:经典使用场景的有序***。比如小说视频等网站,需要对用户上传的小说视频进行排名。榜单可以根据用户的关注数量、更新时间、字数进行分级和排名。
本文来自抚琴绘长歌投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/650997.html