redis都有哪些数据类型?分别在哪些场景下使用比较合适?

(1)string

这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存

(2)hash

这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以就操作hash里的某个字段。

key=150

value={

“id”: 150,

“name”: “zhangsan”,

“age”: 20

}

hash类的数据结构,主要是用来存放一些对象,把一些简单的对象给缓存起来,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值

value={

“id”: 150,

“name”: “zhangsan”,

“age”: 21

}

(3)list

有序列表,这个是可以玩儿出很多花样的

微博,某个大v的粉丝,就可以以list的格式放在redis里去缓存

key=某大v

value=[zhangsan, lisi, wangwu]

比如可以通过list存储一些列表型的数据结构,类似粉丝列表了、文章的评论列表了之类的东西

比如可以通过lrange命令,就是从某个元素开始读取多少个元素,可以基于list实现分页查询,这个很棒的一个功能,基于redis实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走

比如可以搞个简单的消息队列,从list头怼进去,从list尾巴那里弄出来

(4)set

无序集合,自动去重

直接基于set将系统里需要去重的数据扔进去,自动就给去重了,如果你需要对一些数据进行快速的全局去重,你当然也可以基于jvm内存里的HashSet进行去重,但是如果你的某个系统部署在多台机器上呢?

得基于redis进行全局的set去重

可以基于set玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看俩人的共同好友是谁?对吧

把两个大v的粉丝都放在两个set中,对两个set做交集

(5)sorted set

排序的set,去重但是可以排序,写进去的时候给一个分数,自动根据分数排序,这个可以玩儿很多的花样,最大的特点是有个分数可以自定义排序规则

比如说你要是想根据时间对数据排序,那么可以写入进去的时候用某个时间作为分数,人家自动给你按照时间排序了

排行榜:将每个用户以及其对应的什么分数写入进去,zadd board score username,接着zrevrange board 0 99,就可以获取排名前100的用户;zrank board username,可以看到用户在排行榜里的排名

zadd board 85 zhangsan

zadd board 72 wangwu

zadd board 96 lisi

zadd board 62 zhaoliu

96 lisi

85 zhangsan

72 wangwu

62 zhaoliu

zrevrange board 0 3

获取排名前3的用户

96 lisi

85 zhangsan

72 wangwu

zrank board zhaoliu

4

原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/11129844.html

时间: 2024-07-30 13:04:08

redis都有哪些数据类型?分别在哪些场景下使用比较合适?的相关文章

3.redis 都有哪些数据类型?分别在哪些场景下使用比较合适?

作者:中华石杉 面试题 redis 都有哪些数据类型?分别在哪些场景下使用比较合适? 面试官心理分析 除非是面试官感觉看你简历,是工作 3 年以内的比较初级的同学,可能对技术没有很深入的研究,面试官才会问这类问题.否则,在宝贵的面试时间里,面试官实在不想多问. 其实问这个问题,主要有两个原因: 看看你到底有没有全面的了解 redis 有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的 KV 操作: 看看你在实际项目里都怎么玩儿过 redis. 要是你回答的不好,没说出几种数据类型,也没

Redis系列(2)之数据类型

Redis系列(2)之数据类型 <Redis系列(1)之安装>中介绍了Redis支持以下几种数据类型,那么本节主要介绍学习下这几种数据类型的基本操作 字符串类型,string 散列类型,hash 列表类型,list 集合类型,set 有序集合类型,zset 1. 字符串类型 赋值与取值 SET 与 GET. 当键不存在时候返回为空. 1 127.0.0.1:6379> set key hello 2 OK 3 127.0.0.1:6379> get key 4 "hell

Redis常用数据类型介绍、使用场景及其操作命令

Redis常用数据类型介绍.使用场景及其操作命令 本文章同时也在cpper.info发布. Redis目前支持5种数据类型,分别是: 1.String(字符串) 2.List(列表) 3.Hash(字典) 4.Set(集合) 5.Sorted Set(有序集合) 下面就分别介绍这五种数据类型及其相应的操作命令. 1. String(字符串) String是简单的 key-value 键值对,value 不仅可以是 String,也可以是数字.String在redis内部存储默认就是一个字符串,被

Redis的6种数据类型

Redis支持六种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)和基数(HyperLogLog). String(字符串) string 是 redis 最基本的类型,一个 key 对应一个 value. string 类型是二进制安全的.意思是 redis 的 string 可以包含任何数据.比如jpg图片或者序列化的对象. string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 5

轻松搞定高并发:详解Redis的五种数据类型及应用场景分析!

一.Redis基本概念介绍和特性 1.1 Redis基本概念介绍 1.Redis是远程的,有客户端和服务端,我们一般说的是服务端: 2.Redis是基于内存的,所以比基于硬盘的MySQL要快很多,但非常吃内存 3.Redis是非关系型数据库.本质上也是数据库,但MySQL关系型数据库存储时必须定义数据词典,而Redis则不需要. 1.2 Redis 和 Memcached比较 Redis数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的

redis的五种数据类型

redis的五种数据类型 redis客户端建立 ./redis-cli -h 192.168.1.22 -p 6380 --raw 1.String 应用场景: 统计网站访问数量.当前在线人数.微博数.粉丝数等,全局递增ID等 . 常用命令: SET key value GET key MSET key1 value1 [key2 value2] MGET key1 key2 INCR key DECR key SETNX key value  #只有key 不存在时,才设置key的值 2.Ha

(03)redis的5种数据类型及其基本操作

redis支持5种数据类型:[字符串:String].[散列(哈希):Hash].[列表:List].[集合:Set].[有序集合:SortedSet(zset)],下面分别介绍5中数据类型的常用命令以及应用场景. 1.String类型 (01)赋值:set key value (02)取值:get key (03)先获取旧值.再设置新值:getset key value (04)多个赋值:mset key1 value1 key2 value2 key3 value3 ... (05)多个取值

使用socket.io+redis来实现基本的聊天室应用场景

本文根据socket.io与redis来实现基本的聊天室应用场景,主要表现于多个浏览器之间的信息同步和实时更新. 首先看下基本的应用场景:多个浏览器同时跟webServer连接,可实时获取webServer推送的数据,如显示某一项实时更新的数据,多个client之间同步消息等. 这里,需要使用到socket.io和redis的publish机制. 1, socket.io连接于浏览器和nodejs的http服务器之间,可用于二者之间同步数据. 2, redis是一种key-value的数据库,可

AddTransient、AddSingleton、AddScopped 三者都应该在什么场景下使用

网上随便一搜,能搜出一大堆对三者进行区别分析的文章,但是呢,理论是一回事,实际使用又是另外一回事,到底在何种场景下应该使用何种注入方式呢? 通过这篇文章和我自身的实际经验,来说一说实际应用中的情况: 首先 AddTransient,这个文章中说的挺明白,就是当组件无法共享时,将使用Transient.非线程安全的数据库访问对象就是一个例子. 我根据我实际遇到的情况,着重说一下 AddSingleton 和 AddScopped,毕竟这两种实际开发中用到的比较多. 于我个人而言,我比较习惯用Add