短视频网站开发教程,怎样做网站吸引人,无需下载直接登录qq手机版,js制作简单的公司首页redis
redis 是什么
Redis 是一个开源的#xff0c;使用 C 语言编写的,支持网络交互的,内存中的Key-Value 数据结构存储系统#xff0c;支持多种语言,它可以用作数据库、缓存和消息中间件。
一、存储系统特性 内存存储与持久化 Redis 主要将数据存储在内存中#xff0c;这…redis
redis 是什么
Redis 是一个开源的使用 C 语言编写的,支持网络交互的,内存中的Key-Value 数据结构存储系统支持多种语言,它可以用作数据库、缓存和消息中间件。
一、存储系统特性 内存存储与持久化 Redis 主要将数据存储在内存中这使得它能够实现极高的读写速度。在内存中进行数据操作可以极大地减少访问延迟适用于对响应时间要求苛刻的场景。例如在高并发的 Web 应用中Redis 可以快速响应频繁访问的数据请求提升用户体验。 同时Redis 支持数据的持久化能够将内存中的数据保存到磁盘中。这样在服务器重启时可以再次加载数据进行使用确保数据不会因为服务器故障而丢失。持久化方式包括 RDB快照和 AOF只追加文件两种用户可以根据实际需求选择合适的方式。 高性能读写 Redis 的性能极高读的速度可达 110000 次 / 秒写的速度可达 81000 次 / 秒。这种卓越的性能使其在处理大量并发请求时表现出色。无论是作为数据库直接提供数据服务还是作为缓存层加速数据访问Redis 都能快速响应请求提高系统的整体性能。 例如在实时数据分析场景中Redis 可以快速存储和检索大量的实时数据为数据分析提供高效的数据支持。
二、数据结构丰富 多种数据结构支持 Redis 提供了丰富的数据结构包括 list列表、set集合、zset有序集合、hash哈希表等。这些数据结构为开发者提供了灵活的数据存储和操作方式。 例如使用 list 可以实现消息队列生产者将消息推入列表一端消费者从另一端取出消息进行处理使用 set 可以进行去重操作快速判断一个元素是否存在于集合中使用 zset 可以实现排行榜功能根据元素的分值进行排序。 灵活的数据操作 不同的数据结构支持不同的操作方法Redis 提供了丰富的命令来操作这些数据结构。开发者可以根据具体需求选择合适的数据结构和操作命令实现高效的数据管理。 比如对 hash 数据结构可以进行字段的添加、修改和删除操作方便存储和管理复杂的结构化数据。
三、原子性操作与分布式扩展 原子性操作 Redis 的所有操作都是原子性的这意味着一个操作要么完全执行成功要么完全不执行不会出现部分执行的情况。这种原子性保证了数据的一致性和完整性。 同时Redis 还支持对几个操作合并后的原子性执行例如使用事务MULTI/EXEC 命令可以将多个操作打包成一个原子操作确保这些操作要么全部成功执行要么全部不执行。这在需要保证多个操作的一致性的场景中非常有用比如在金融交易系统中。 分布式扩展 Redis 具有极高的分布式集群化扩展性支持 master-slave主从模式。在主从模式下可以将数据复制到多个从节点实现数据的冗余备份和读操作的负载均衡。主节点负责写操作从节点负责读操作提高了系统的整体性能和可用性。 此外Redis 还可以通过分片sharding技术将数据分布到多个节点上进一步提高系统的存储容量和处理能力。这种分布式扩展能力使得 Redis 能够适应大规模数据存储和高并发访问的需求。
四、应用场景广泛 数据库 Redis 可以用作数据库直接存储和管理数据。由于其高性能和丰富的数据结构适用于一些对性能要求高、数据规模相对较小的场景如缓存数据、会话管理、实时数据存储等。 例如在社交网络应用中可以使用 Redis 存储用户的在线状态、好友列表等数据。 缓存 作为缓存是 Redis 最常见的应用场景之一。将经常访问的数据存储在 Redis 中可以大大减少对后端数据库的访问压力提高系统的响应速度。当数据发生变化时可以同时更新数据库和 Redis 缓存确保数据的一致性。 比如在电商平台中商品的热门信息可以缓存到 Redis 中提高页面加载速度。 消息中间件 利用 Redis 的发布 / 订阅功能可以实现消息中间件的作用。生产者将消息发布到特定的频道消费者订阅这些频道接收并处理消息。这种方式可以实现实时的消息传递适用于实时通知、日志处理等场景。 例如在分布式系统中可以使用 Redis 实现事件通知机制当一个节点发生特定事件时将消息发布到 Redis 频道其他节点订阅该频道并进行相应的处理。
简单来说
1.Redis 将数据存储在内存中,也支持数据的持久化可以将内存中的数据保持在磁盘中重启的时候可以再次加载进行使用。
2.性能极高 , Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。
3.Redis 供 listsetzsethash 等数据结构的存储。
4.原子 – Redis 的所有操作都是原子性的同时 Redis 还支持对几个操作全并后的原子性执行。
5.Redis 分布式集群化扩展性极,高即 master-slave(主-从)模式。
为什么使用 redis
在当今 web3.0 时代使用 Redis 有以下重要原因
一、解决传统关系型数据库性能问题 应对大量访问压力 随着互联网的发展Web 应用面临着越来越多的用户访问和数据处理需求。传统的关系型数据库在大量访问压力下容易出现性能问题如连接数量限制和 IO 瓶颈。Redis 作为一种高性能的内存数据库可以有效地缓解这些问题。 例如在高并发的电商平台中大量用户同时进行商品浏览和购买操作对数据库的访问压力巨大。使用 Redis 缓存热门商品信息和用户购物车数据可以减少对关系型数据库的访问次数提高系统的响应速度。 解决连接数量问题 传统关系型数据库通常对连接数量有一定的限制当连接数量过多时会导致数据库性能下降甚至崩溃。Redis 可以作为一个独立的缓存层接收来自应用程序的大量连接减轻关系型数据库的连接压力。 比如在社交网络应用中用户频繁地查看好友动态和消息通知。使用 Redis 缓存这些数据可以减少对关系型数据库的连接需求提高系统的稳定性。 突破 IO 瓶颈 关系型数据库的 IO 操作通常比较耗时尤其是在大量数据读写的情况下。Redis 将数据存储在内存中读写速度极快可以大大减少 IO 操作的时间提高系统的性能。 例如在数据分析场景中需要对大量数据进行实时查询和处理。使用 Redis 作为缓存可以快速获取频繁访问的数据减少对关系型数据库的 IO 压力提高数据分析的效率。
二、数据缓存与存储优化 数据缓存 Redis 可以对部分数据进行缓存将经常访问的数据存储在内存中以便快速访问。当数据发生变化时可以同时更新数据库和 Redis 缓存确保数据的一致性。 比如在新闻网站中热门新闻文章的访问频率很高。将这些文章的内容缓存到 Redis 中可以大大提高页面加载速度减少对数据库的访问压力。 直接存储某些数据 对于一些特定的数据如会话信息、配置参数等可以直接存储在 Redis 中。这些数据通常不需要复杂的关系型数据库结构而且对读写速度要求较高。 例如在在线游戏中玩家的会话状态可以存储在 Redis 中方便快速获取和更新玩家的游戏状态。
三、与关系型数据库相互依赖 不能完全替代关系型数据库 虽然 Redis 具有很多优点但它不能完全替代关系型数据库。关系型数据库在数据的完整性、一致性和复杂查询方面具有优势适合存储结构化的数据和进行复杂的事务处理。 例如在企业级应用中订单数据、用户信息等需要保证数据的准确性和完整性适合存储在关系型数据库中。而 Redis 可以作为缓存层提高这些数据的访问速度。 相互补充 Redis 和关系型数据库可以相互依赖共同构建一个高效的应用系统。Redis 可以缓存关系型数据库中的数据减少数据库的访问压力关系型数据库可以作为数据的持久存储层保证数据的安全性和可靠性。 比如在电商平台中商品信息可以存储在关系型数据库中同时将热门商品的信息缓存到 Redis 中。当用户查询商品时先从 Redis 中获取数据如果没有找到则从关系型数据库中查询并将结果缓存到 Redis 中以便下次快速访问。
Linux 下使用 Docker 安装 redis
从官网下载
官方地址Redis configuration | Docs
创建 redis 配置文件 mkdir -p /opt/redis/conf
数据映射挂载卷 mkdir -p /opt/redis/data
复制 redis.conf 文件到/opt/redis/conf 目录下(注意,此文件已设置密码为 123) 允许远程连接访问 拉取镜像
docker pull redis:6.0
安装命令
docker run -d -p 6379:6379 --name redis --restartalways --privilegedtrue -v /opt/redis/conf/redis.conf:/etc/redis/redis.conf -v /opt/redis/data:/data redis:6.0
redis 数据结构
5 种基本常用结构 一、String字符串 用途 可以存储字符串、整数或浮点数等简单数据类型。 常用于缓存单个值如用户信息、计数器等。 特点 是二进制安全的可以存储任何类型的数据。 支持对字符串进行追加、截取、自增自减等操作。
二、Hash哈希 用途 存储对象信息例如用户的属性姓名、年龄、性别等。 适合存储需要以字段形式访问的数据。 特点 类似于 Java 中的 HashMap由键值对组成。 可以对单个字段进行操作如增加、删除或修改特定字段的值。
三、List列表 用途 实现消息队列、栈等数据结构。 可以存储有序的元素集合。 特点 可以从两端进行插入和弹出操作。 支持按照索引访问元素。
四、Set集合 用途 存储不重复的元素集合例如用户的标签、兴趣爱好等。 可用于实现交集、并集、差集等集合运算。 特点 元素无序且唯一。 可以快速判断一个元素是否存在于集合中。
五、ZsetSorted Set有序集合 用途 实现排行榜、优先级队列等功能。 存储带有分数的元素集合并根据分数进行排序。 特点 元素具有唯一性但每个元素都关联一个分数。 可以按照分数范围获取元素。 String字符串
一、基本概念
String 类型是 Redis 最基本的数据类型之一它通过一个 key 对应一个 value 的方式进行存储。这种简单而直接的存储方式使得它在很多场景下都非常实用。
二、二进制安全的特性
Redis 的 String 类型具有二进制安全的特点这意味着它可以存储任何类型的数据包括但不限于文本、图片以二进制形式存储、序列化的对象等。这种特性使得 Redis 在存储各种复杂数据时具有很大的灵活性。例如可以将序列化后的 Java 对象存储在 Redis 中实现对象的缓存和快速访问。
三、存储容量
String 类型的值最大能存储 512MB。这个容量对于大多数应用场景来说已经足够大可以满足存储大量文本、图片或其他数据的需求。
四、单值缓存的应用场景 设置和获取值 使用 set key value 命令可以设置一个键值对将特定的 value 存储在指定的 key 下。get key 命令用于获取指定 key 对应的 value。del key 命令可以删除指定的 key 及其对应的值。keys * 命令可以列出所有的 key。 存储 JSON 字符串 单值缓存的值可以是 JSON 字符串。这在存储复杂数据结构时非常有用例如存储一个包含多个字段的对象的 JSON 表示形式。通过将对象序列化为 JSON 字符串并存储在 Redis 中可以方便地进行缓存和快速访问。
五、计数器的应用场景 设置初始值 set news_views:1 0 可以设置文章的访问量初始值为 0。这里的 news_views:1 是一个特定的 key表示文章 1 的访问量。 增加和减少计数器 incr news_views:1 用于将文章的访问量加 1。每次执行这个命令Redis 会自动将指定 key 的值增加 1。decr news_views:1 则将文章的访问量减 1。 获取计数器的值 get news_views:1 可以获取文章的当前访问量值。
通过使用 Redis 的 String 类型可以方便地实现单值缓存和计数器等功能为应用程序提供高效的数据存储和访问方式。 Hash哈希
一、数据结构特点
Redis 的 Hash 类型是一个 string 类型的 field字段和 value 的映射表。它非常适合用于存储对象因为可以将对象的各个属性作为 field对应的值作为 value 进行存储。例如存储用户信息时可以将用户的 ID、姓名、年龄等属性分别作为 field对应的具体值作为 value 存储在一个 Hash 中。 二、常用命令及功能 存储键值对 hset key field value 命令用于在指定的哈希表key中存储一个 field 和 value 的键值对。如果哈希表不存在会自动创建。这个命令可以方便地向 Hash 中添加或更新一个属性的值。 获取键值 hget key field 命令用于获取指定哈希表key中对应 field 的键值。通过这个命令可以快速获取对象的特定属性值。 删除键值对 hdel key field 命令用于删除指定哈希表key中的一个 field 键值对。如果要删除多个 field可以多次执行这个命令。 获取 field 数量 hlen key 命令用于返回指定哈希表key中的 field 的数量。这个命令可以快速了解 Hash 中存储了多少个属性。 获取所有键值对 hgetall key 命令用于返回指定哈希表key中所有的键值对。这个命令会返回一个包含所有 field 和 value 的列表方便对整个对象进行遍历和处理。
三、应用场景举例 存储用户购物车信息可以将用户的购物车作为一个 Hash 存储每个商品的 ID 作为 field商品的数量、价格等信息作为 value。这样可以方便地对购物车进行添加、删除商品以及查询购物车中商品的信息等操作。 存储系统配置信息将将系统的各种配置参数作为 field对应的配置值作为 value 存储在一个 Hash 中。这样可以方便地进行配置的读取和修改并且可以对不同的配置进行分组管理。
总之Redis 的 Hash 类型提供了一种方便、高效的方式来存储和操作对象类型的数据在很多实际应用场景中都有广泛的应用。 List列表
一、数据结构特点
Redis 列表是简单的字符串列表按照插入顺序进行排序。这意味着可以在列表的头部左边或尾部右边插入元素并且元素在列表中的位置是固定的按照插入的先后顺序排列。
二、常用命令及功能 插入元素 lpush key value[value...]将一个或多个值插入到指定 key 列表的表头最左边。例如lpush mylist value1 value2 会将 value1 和 value2 依次插入到名为 mylist 的列表的头部。 rpush key value[value...]将一个或多个值插入到指定 key 列表的表尾最右边。例如rpush mylist value3 value4 会将 value3 和 value4 依次插入到名为 mylist 的列表的尾部。 移除并返回元素 lpop key移除并返回指定 key 列表的头元素。执行这个命令后列表的第一个元素将被移除并返回该元素的值。 rpop key移除并返回指定 key 列表的尾元素。与 lpop 类似这个命令会移除并返回列表的最后一个元素。 获取指定区间内的元素 lrange key start stop返回列表 key 中指定区间内的元素区间以偏移量 start 和 stop 确定。例如lrange mylist 0 -1 会返回 mylist 列表中的所有元素。
三、常见用法 Stack栈 实现方式为 LPUSH LPOP即先使用 lpush 将元素依次压入栈中然后使用 lpop 从栈顶弹出元素。这种方式遵循 “后进先出”FILO的原则类似于数据结构中的栈。 Queue队列 实现方式为 LPUSH RPOP即先使用 lpush 将元素依次插入到队列的尾部然后使用 rpop 从队列的尾部弹出元素。这种方式遵循 “先进先出”FIFO的原则类似于数据结构中的队列。
四、应用场景举例 消息队列可以使用 Redis 列表作为消息队列生产者使用 lpush 将消息插入到列表中消费者使用 rpop 从列表中获取消息进行处理。 任务队列将任务存储在列表中工作进程使用 lpop 从列表中获取任务进行处理实现任务的分发和执行。 历史记录可以将用户的操作历史记录存储在列表中方便后续查询和分析。
总之Redis 的列表类型提供了一种灵活、高效的方式来处理有序的字符串集合可以应用于多种场景。 Set集合
一、数据结构特点
Redis 的 Set 是一种无序集合这意味着集合中的元素没有特定的顺序。Set 中的元素是唯一的不允许重复。
二、常用命令及功能 添加元素 sadd key member[member...]往集合 key 中存入一个或多个元素。如果元素已经存在于集合中则会被忽略。如果集合 key 不存在则会新建一个集合。例如sadd myset element1 element2 会将 element1 和 element2 添加到名为 myset 的集合中。 删除元素 srem key member[member...]从集合 key 中删除一个或多个元素。例如srem myset element1 会从 myset 集合中删除 element1。 获取所有元素 smembers key获取集合 key 中所有的元素。这个命令会返回一个包含集合中所有元素的列表。例如执行 smembers myset 会返回 myset 集合中的所有元素。 获取元素个数 scard key获取集合 key 的元素个数。这个命令会返回一个整数表示集合中元素的数量。例如执行 scard myset 会返回 myset 集合中元素的个数。
三、应用场景举例 标签系统可以使用 Set 来存储用户的标签。每个用户的标签集合是一个 Set通过 sadd 命令添加标签srem 命令删除标签smembers 命令获取用户的所有标签。 共同关注在社交网络中可以使用 Set 来存储用户的关注列表。通过对两个用户的关注集合进行交集运算可以得到他们的共同关注用户。 去重功能Set 的唯一性特点可以用于数据去重。例如在处理日志数据时可以将日志中的 IP 地址存储在 Set 中以去除重复的 IP 地址。
总之Redis 的 Set 类型提供了一种高效的方式来存储和操作无序的唯一元素集合可以应用于多种场景。 zset(sorted set有序集合)
一、数据结构特点
Redis 的有序集合Zset与普通集合类似也是不允许重复的成员但它是有序的。每个元素都会关联一个 double 类型的分数Redis 通过这个分数来为集合中的成员进行从小到大的排序。
二、关键特性 成员唯一性Zset 的成员是唯一的这意味着不能有重复的元素存在于同一个有序集合中。 分数可重复虽然成员是唯一的但分数可以重复。这使得可以有多个元素具有相同的分数它们在排序中的位置将根据插入的先后顺序或者其他规则来确定。
三、常用命令及功能 添加带分值元素 zadd key score member[[score member]..]往有序集合 key 中加入带分值的元素。可以同时添加一个或多个元素每个元素由分数和成员组成。例如zadd myzset 10 element1 20 element2 会将 element1 以分数 10 和 element2 以分数 20 添加到名为 myzset 的有序集合中。 删除元素 zrem key member[member...]从有序集合 key 中删除一个或多个元素。例如zrem myzset element1 会从 myzset 有序集合中删除 element1。 获取元素分值 zscore key member返回有序集合 key 中元素 member 的分值。例如执行 zscore myzset element1 会返回 element1 在 myzset 有序集合中的分数。 获取元素个数 zcard key返回有序集合 key 中元素的个数。例如执行 zcard myzset 会返回 myzset 有序集合中的元素数量。
四、应用场景举例 排行榜可以使用 Zset 来实现各种排行榜例如游戏得分排行榜、用户活跃度排行榜等。将用户的 ID 或其他标识作为成员用户的得分或活跃度作为分数通过 zadd 命令添加元素然后可以使用 zrevrange 等命令获取排行榜的前几名。 时间线在社交网络或新闻平台中可以使用 Zset 来存储用户的动态或新闻文章以发布时间作为分数动态或文章的 ID 作为成员。这样可以方便地按照时间顺序获取最新的动态或文章。 优先级队列Zset 可以用作优先级队列将任务的优先级作为分数任务的标识作为成员。高优先级的任务会排在前面可以通过 zpopmin 或 zpopmax 命令获取并删除优先级最高的任务。 设置失效时间
一、需求背景
在很多应用场景中我们并不希望 Redis 的键一直存在。比如缓存数据为了提高性能而将一些数据存储在 Redis 中但这些数据可能随着时间的推移变得不再有效需要被自动清理以释放内存空间。又如验证码通常只在一定时间内有效过期后就应该被自动删除。Redis 提供的设置键过期时间的命令正好满足了这些需求。
二、设置过期时间的方式 设置值时直接设置有效时间 使用 set name jim EX 30 命令可以在设置键值对的同时设置失效时间为 30 秒。其中 EX 表示以秒为单位设置过期时间。同样PX 表示以毫秒为单位设置过期时间且 EX 和 PX 不区分大小写。例如 set name jim PX 30000 表示设置键 name 的值为 jim并以毫秒为单位设置过期时间为 30000 毫秒。 设置值后设置有效时间 expire key 时间(秒)在设置键值对之后可以使用 expire 命令为键设置过期时间单位为秒。例如 expire name 60 表示为键 name 设置过期时间为 60 秒。 pexpire key 时间(毫秒)与 expire 类似pexpire 以毫秒为单位设置键的过期时间。例如 pexpire name 60000 表示为键 name 设置过期时间为 60000 毫秒。
三、查看剩余时间的命令 ttl key查看键的剩余时间单位为秒。执行这个命令会返回键的剩余生存时间如果键不存在或者已经过期会返回 -2如果键没有设置过期时间会返回 -1。 pttl key查看键的剩余时间单位为毫秒。与 ttl 类似但返回的时间单位是毫秒。
四、应用场景举例 缓存管理在缓存系统中可以为缓存数据设置合理的过期时间确保缓存数据在一定时间后自动失效避免缓存数据占用过多内存。例如对于经常变化的数据可以设置较短的过期时间以保证缓存中的数据始终是最新的。 验证码验证在用户注册、登录等场景中生成的验证码通常只在一定时间内有效。可以将验证码存储在 Redis 中并设置适当的过期时间过期后自动删除确保验证码的安全性和有效性。
springBoot 集成使用 redis
一、概述
在 Spring Boot 应用中集成 Redis 可以极大地提高数据的存储和访问效率。Jedis 是 Redis 官方推出的 Java 客户端但直接使用 Jedis 可能会比较繁琐。而 Spring-data-redis 作为 Spring 大家族的一部分提供了更简单、高效的方式来在 Spring 应用中访问 Redis 服务。它对底层的 Redis 开发包如 Jedis、JRedis 和 RJC进行了高度封装通过 RedisTemplate 提供了丰富的 Redis 操作接口。
二、Spring-data-redis 针对 Jedis 的功能 连接池自动管理和高度封装的 RedisTemplate Spring-data-redis 自动管理 Redis 连接池避免了手动管理连接的复杂性。 提供了高度封装的 “RedisTemplate” 类简化了 Redis 的操作。通过这个模板类可以方便地进行各种数据类型的存储和读取操作。 归类封装的操作接口 将 Jedis 客户端中的大量 API 进行了归类封装将同一类型的操作封装为不同的 operation 接口。 ValueOperations用于简单的键值对K-V操作如设置和获取单个值。 SetOperations用于 set 类型数据的操作如添加、删除元素判断元素是否存在等。 ZSetOperations用于 zset 类型数据的操作如添加元素并设置分数获取范围内的元素等。 HashOperations针对 map 类型的数据操作如设置和获取哈希表中的字段值。 ListOperations针对 list 类型的数据操作如在列表的头部或尾部添加元素获取列表中的元素范围等。 事务操作封装 Spring-data-redis 将事务操作进行了封装由容器控制事务的开始、提交和回滚。可以方便地在 Spring 应用中使用事务来保证数据的一致性。 序列化 / 反序列化策略 针对数据的 “序列化 / 反序列化”提供了多种可选择的策略RedisSerializer。 JdkSerializationRedisSerializer适用于 POJO 对象的存取场景使用 JDK 本身的序列化机制。但这种方式可能会导致序列化后的字节数组较大并且在不同 JDK 版本之间可能存在兼容性问题。 StringRedisSerializer在 Key 或者 value 为字符串的场景下非常适用。它根据指定的 charset 对数据的字节序列进行编码成 string是 “new String (bytes, charset)” 和 “string.getBytes (charset)” 的直接封装。是最轻量级和高效的策略。 JacksonJsonRedisSerializer利用 Jackson-json 工具提供了 JavaBean 与 JSON 之间的转换能力。可以将 POJO 实例序列化成 JSON 格式存储在 Redis 中也可以将 JSON 格式的数据转换成 POJO 实例。这种方式在需要存储复杂对象并且希望以 JSON 格式进行存储和传输时非常方便。
三、使用步骤 在项目中添加 Spring-data-redis 和 Jedis 的依赖。 配置 Redis 连接信息如主机地址、端口号、密码等。 在 Spring Boot 应用中注入 RedisTemplate 或相应的 operation 接口进行 Redis 操作。 搭建
1.添加 redis 依赖
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-data-redis/artifactId
/dependency
2.配置连接 redis.yml
spring:
redis:
host: 192.168.31.100
port: 6379
password: 111
database: 0
pool:
max-active: 8 *# 连接池最大连接数使用负值表示没有限制*max-wait: -1ms *# 连接池最大阻塞等待时间使用负值表示没有限制*
max-idle: 8 *# 连接池中的最大空闲连接*
min-idle: 0 *# 连接池中的最小空闲连接*
timeout: 5000ms *# 连接超时时间毫秒*
3.注入 RedisTemplate
Autowired
RedisTemplate redisTemplate;
4.测试
System.out.println(redisTemplate.hasKey(e));//判断键是否在System.out.println(redisTemplate.delete(e));//删除指定的键System.out.println(redisTemplate.hasKey(e));//判断键是否在
ValueOperations valueOperations redisTemplate.opsForValue();valueOperations.set(name,jim);valueOperations.set(count,1);valueOperations.increment(count);valueOperations.increment(count);valueOperations.set(yzm,12345,10, TimeUnit.SECONDS);System.out.println(redisTemplate.hasKey(name));
HashOperations hashOperations redisTemplate.opsForHash();hashOperations.put(news,newsdz1,20);
ListOperations listOperations redisTemplate.opsForList();序列化键值
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializerUser(User.class));
需要被 Redis 缓存的类,必须实现序列化接口
详细说明 判断键是否存在和删除键 System.out.println(redisTemplate.hasKey(e));判断键 e 是否存在于 Redis 中。 System.out.println(redisTemplate.delete(e));删除键 e并返回是否删除成功的布尔值。 System.out.println(redisTemplate.hasKey(e));再次判断键 e 是否存在验证删除操作是否成功。 设置键值对和自增操作 ValueOperations valueOperations redisTemplate.opsForValue();获取用于操作简单键值对的 ValueOperations 对象。 valueOperations.set(name,jim);设置键为 name值为 jim 的键值对。 valueOperations.set(count,1);设置键为 count值为 1 的键值对。 valueOperations.increment(count);将键 count 的值自增 1。 valueOperations.increment(count);再次将键 count 的值自增 1。 valueOperations.set(yzm,12345,10, TimeUnit.SECONDS);设置键为 yzm值为 12345并设置过期时间为 10 秒。 操作哈希类型数据 HashOperations hashOperations redisTemplate.opsForHash();获取用于操作哈希类型数据的 HashOperations 对象。 hashOperations.put(news,newsdz1,20);在键为 news 的哈希中设置字段为 newsdz1值为 20 的键值对。 操作列表类型数据 ListOperations listOperations redisTemplate.opsForList();获取用于操作列表类型数据的 ListOperations 对象。 序列化键值 redisTemplate.setKeySerializer(new StringRedisSerializer());设置键的序列化器为 StringRedisSerializer确保键以字符串形式进行序列化。 redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializerUser(User.class));设置值的序列化器为 Jackson2JsonRedisSerializer用于将 Java 对象序列化为 JSON 格式存储在 Redis 中。这里指定了要序列化的对象类型为 User 类。
注意事项 需要被 Redis 缓存的类必须实现序列化接口这是因为 Redis 在存储对象时需要将对象序列化为字节数组进行存储。如果不实现序列化接口在存储和读取对象时会抛出异常。 在设置键值对时如果没有指定过期时间那么键值对将一直存在于 Redis 中直到被手动删除或 Redis 内存不足时被清理。 在使用不同的操作接口如 ValueOperations、HashOperations、ListOperations 等时需要根据具体的业务需求选择合适的接口进行操作以提高代码的可读性和可维护性。