Redis的数据类型及如何在Java中操作Redis,配置连接池

本文介绍了Redis的基本概念、数据类型(包括字符串、哈希、列表、集合和有序集合)及其在Java中的操作,重点讲解了如何在Spring框架中使用SpringDataRedis进行简化操作,并讨论了配置连接池以优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis的数据类型及如何在Java中操作Redis,配置连接池

介绍

什么是redis,常用开发场景是什么

在这里插入图片描述

Redis是一个基于内存的key-value数据库,它是[Remote Dictionary Servicel]的首字母缩写,也就是远程字典服务。

基于诶存存储,读写性能高

适合存储热点数据(热点商品、资讯、新闻)

企业应用广泛

Redis介绍

Redis 是一个开源 (BSD 许可证)、内存中的数据结构存储,用作数据库、缓存、消息代理和流处理引擎。Redis 提供了字符串、哈希、列表、集合、有序集合、位图、HyperLogLogs、地理空间索引和流等数据结构。Redis 内置了复制Lua 脚本LRU 淘汰事务、不同级别的持久化,并通过Redis Sentinel提供高可用性,并通过Redis Cluster进行自动分区。

你可以在这些类型上运行 原子操作 ,比如向字符串追加递增哈希中的值向列表中推送元素计算集合的交集并集差集; 或者获取排序集中排名最高的成员

要实现最佳性能,Redis与内存数据集配合工作。根据您的用例,Redis可以通过定期将数据集转储到磁盘或通过将每个命令附加到基于磁盘的日志来持久化数据。如果您只需要一个功能丰富的网络化内存缓存,还可以禁用持久化。

Redis支持异步复制,具有快速的非阻塞同步和在网络分裂时的自动重新连接和部分重新同步功能。

NoSql(Not Only Sql),不仅仅是sql,泛指非关系型数据库(数据库之间没有关系),并不是要取代关系型数据库,而是关系型数据库的补充。

数据库排行榜:

在这里插入图片描述

使用Redis能做什么

数据缓存

消息队列等等

在这里插入图片描述

Redis的数据类型(面试常考)

数据类型介绍

Redis的五种数据类型

redis是一种高级的key-value的存储系统,键是string类型,其中value支持五种数据类型,对于键和值的描述如下所示:

键(key):

[1] 键不能重复

[2] 作用:标识存储的数据

[3] 数据类型:String

[4] 命名规则:

​ 1)不能太长:因为查询效率低,查询起来不方便

​ 2)不能太短:容易重复,并且可读性差

​ 3)按照规范:HEIMA_STU_LIST

值(value):支持五种数据类型

string					字符串类型,类似于java中string
hash					由键值对组成,类似于java中的map
list					列表类型,类似于java中的list,元素存取有序,可以重复
set						集合类型,类似于java中的set,元素存取无序,不可重复
sorted set/zset          有序的集合类型,每个元素有一个分数来决定他的顺序

String类型的操作命令

字符串类型String

字符串类型是Redis中最为基础的数据存储类型,它在Redis中以二进制保存,无论存入的是字符串、整数、浮点类型都会以字符串写入

在Redis中字符串类型的值最多可以容纳的数据长度是512M,这是以后最常用的数据类型

在这里插入图片描述

常用命令

更多命令可以参考redis中文网

在这里插入图片描述

补充:
批量操作:
mset name lisi   addr sh
mget name   age   addr
del  name  age

使用场景

用户登录后端保存短信验证码,并设置失效时间;

代替后端session功能,实现分布式缓存(是将数据分散存储在多台独立的设备上)等

小结

1.添加值:set 键 值

2.获取值:get 键

3.删除值:del 键

hash类型的操作命令

概述

Redis中的Hash类型可以看成是键和值都是string类型的Map容器,每一个hash可以存储4G个键值对
在这里插入图片描述

该类型非常适合于存储对象的信息。如一个用户有姓名,密码,年龄等信息,则可以有username,password,age等键。它的存储结构如下:

在这里插入图片描述

常用命令

命令 功能
hset 键 字段 值 添加键,字段,值
hget 键 字段 通过键,字段得到值
hmset 键 字段 值 字段 值 multiply多个,一次添加多个字段和值
hmget 键 字段 字段 通过键,获取多个字段和值
hdel 键 字段 字段 删除一个或多个字段的值
hgetall 键 得到这个键下所有的字段和值
HKEYS 键 获取hash表中所有字段
HVALS 键 获取hash表中所有值

使用场景

购物车

以用户id为key,商品id为field,商品数量为value,恰好构成了购物车的三个要素,如下图所示:

在这里插入图片描述

小结

功能 hash类型的操作命令
添加值 hset
得到值 hget
删除值 hdel
添加多个字段 hmset
得到多个字段值 hmget
得到所有的字段值 hgetall

list类型 的操作命令

概述

​ 在redis 中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其左部和右部添加新的元素。在插入时,如果该键并不存在,redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除,List中可以包含的最大元素数量是4G个

在这里插入图片描述

常用命令

在这里插入图片描述

使用场景

—微信朋友圈点赞,要求按照点赞顺序显示好友信息,如果取消点赞,移除对应好友信息

—list类型的range命令可以分页查看队列中的数据。可将每隔一段时间计算的排行榜存储在list类型中,如京东每日的手机销量排行、学校每次月考学生的成绩排名等

小结

​ 1.从左边添加元素:lpush

​ 2.从右边添加元素:rpush

​ 3.从左边删除元素:lpop

​ 4.从右边删除元素:rpop

​ 5.得到指定范围的元素:lrange

​ 6.得到列表的长度:llen

set类型的操作命令

概述

​ 在Redis中,我们可以将set类型看作为没有排序的字符集合,和LIst类型一样,我们也可以在该类型的数值上执行添加、删除或判断某一元素是否存在等操作。Set可包含的最大元素数量是4G,和List类型不同的是,Set集合中不允许出现重复的元素。

常用命令

在这里插入图片描述

应用场景

需要去重的少量信息,比如:身份证信息、手机号码等作为黑名单|白名单

共同好友查询,使用set的交集

​ eg:zhang:{11,22,33,44} lisi:{22,33,66,88}

​ zhangsan和lisi的共同好友:交集取22 33 即可

小结

1.添加元素:sadd

2.删除元素:srem

3.得到所有元素:smembers

4判断元素是否存在:sismember

zset/sorted set类型的操作命令

概述

Redis有序集合(sorted set)和set集合一样也是无序不可重复。不同的是每个元素都会关联一个分数(排序因子)。

redis正是通过分数来为集合中的成员进行从小到大的排序

有序集合的成员是唯一的,但分数(score)却可以重复,每个集合可以存储40多亿个成员

在这里插入图片描述

常用命令

在这里插入图片描述

应用场景

b站视频点击量排名
新浪热点文章点击量、收藏量等排名

小结

命令 行为
zadd 添加
zrange 查询
zrem 删除
zcard 个数
zrank 索引号
zscore 得到分数

Redis的其他操作

Redis的通用命令

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值