iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >浅谈redis缓存在项目中的使用
  • 637
分享到

浅谈redis缓存在项目中的使用

2024-04-02 19:04:59 637人浏览 安东尼
摘要

背景 Redis 是一个开源的内存数据结构存储系统。 可以作为数据库、缓存和消息中间件使用。 支持多种类型的数据结构。 Redis 内置了 复制(replication),lua脚

背景

Redis 是一个开源的内存数据结构存储系统。

可以作为数据库缓存和消息中间件使用。

支持多种类型的数据结构。

Redis 内置了 复制(replication),lua脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence)。

通过 Redis 哨兵(Sentinel)和 Redis 集群(Cluster)的自动分区,提供高可用性(high availability)。

基本数据类型

字符串(strings)

1、string 的过期时间在重新设置值之后会被清除


127.0.0.1:6379> set hello 3OK127.0.0.1:6379> get hello"3"
127.0.0.1:6379> ttl hello(integer) -1127.0.0.1:6379> expire hello 3000
(integer) 1
127.0.0.1:6379> set hello 4OK127.0.0.1:6379> ttl hello(integer) -1

2、设置 string 类型的值可以覆盖任何其他类型


127.0.0.1:6379> sadd settest 1,2
(integer) 1
127.0.0.1:6379> type settestset127.0.0.1:6379> set settest helloOK127.0.0.1:6379> type setteststring127.0.0.1:6379> sadd settest a,b(error) WRONGTYPE Operation against a key holding the wrong kind of value

散列(hashes)
列表(lists)
Redis lists 基于 Linked Lists 实现。头尾操作极速,检索较慢
集合(sets)
支持范围查找的有序集合(sorted sets)
有序集合的排序默认按照字典序排列
bitmaps
hyperloglogs
支持按半径索引查询的地理空间(geospatial)

应用场景

string
缓存数据
不管是简单和复杂的数据都可以直接转为string存储。

key:active:spring2019:title value:“2019春节活动” 操作:set

商品信息,省市区信息,活动配置等一系列不常变化的冷数据缓存

非常热门数据的缓存,游戏排行,后台每秒更新一次数据

简单计数
2019春节活动参加人数

key:active:spring2019:total value:3045 操作:incr

定时过期
一个人一天只能进行一次签到

key:active:checkin:userId:10000:day:20190101 value:签到时间戳 操作:expire
分布式
下面的代码不严谨,nx 可以放并发


127.0.0.1:6379> set lockkey 1  nxOK127.0.0.1:6379> set lockkey 1  nx(nil)

list
用户排队
push,pop

有序消息
push,pop

实现生产者和消费者模型
阻塞式访问 BRPOP 和 BLPOP 命令

set
去重列表
2019春节活动参加人数

key:active:spring2019:users value:100010,10020 操作:很多

标签
用户标签

商家标签

春节活动一共有 abcde 5个任务,用户A已经完成a,b,用户B已经完成 c,d

交集
用户A,用户B 都完成的任务

并集
用户A,用户B 任一完成的任务

差集
用户A还没有完成的任务

获取随机元素
从礼品库 set 中随机获得一个礼品

hash
同一资源的不同属性
用户在活动期间一共获得了不同种类奖品数量

key:active:spring:g'ifts:user:10010 value:{“giftA”:2,“giftB”:5} 操作:很多

可以直接对 giftA 执行 incr 操作

zset
排行榜
用户消费排行,点赞排行等

key:active:spring⭐️rank value:用户ID,score:点赞数量 操作:很多

根据分数获取 top 10

查询某个用户的分数

查询 得分在90-100 之间的用户

有时候我们的得分并不是由某一项业务值决定的,可能是由两项业务值来排序的,比如先看用户的实际得分,在看用户等级,那么我们在设计score的时候可以用小数点之前的值表示得分,小数点之后的值表示等级,如果有其他特殊要求,还可以考虑得分加上某个极大值来处理。

注意事项
每个 key 都应该有合理的失效时间

string的过期时间在重新设值后会被覆盖

string类型的 set 操作可以覆盖类型

合理使用相应的数据结构

不要用list存大量数据并检索
合理规划 key 的数量
判断用户有没有参加应该用set,不应该每个用户一个key
环境数据隔离
业务数据隔离 用户 redis 业务 redis 活动 redis 应该做区分,活动的 redis 在活动结束后可以自由清理
合理使用管道,lua 脚本和 redis 事务,提高性能,尤其是在脚本中使用 redis 的时候
在有大量 key 的 Reids 线上系统,要在主库禁用 keys * 操作,防止卡死

到此这篇关于浅谈redis缓存在项目中的使用的文章就介绍到这了,更多相关redis缓存使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈redis缓存在项目中的使用

本文链接: https://www.lsjlt.com/news/126386.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈redis缓存在项目中的使用
    背景 Redis 是一个开源的内存数据结构存储系统。 可以作为数据库、缓存和消息中间件使用。 支持多种类型的数据结构。 Redis 内置了 复制(replication),LUA脚...
    99+
    2022-11-12
  • 浅谈redis在项目中的应用
    redis在项目中的应用 ps:PHP 会自动 关redis连接 不需要手动关 对于临时的数据 可以不经过数据库直接redis上操作 public function insertinfo(){ ...
    99+
    2022-06-04
    浅谈 项目 redis
  • 在项目中使用redis做缓存的一些思路
    目录在项目中redis做缓存的一些思路首先,缓存的对象有三种本人走过的一些弯路为什么没用Redis做缓存使用Table作本地缓存使用Redis作缓存让我们来思考一下下面几个问题那么使...
    99+
    2022-11-12
  • 怎么在javaWeb项目中使用Redis进行缓存
    怎么在javaWeb项目中使用Redis进行缓存?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一:serviceImpl定义:@Service  &nb...
    99+
    2023-05-30
  • redis怎么在项目中做缓存层
    在项目中使用Redis作为缓存层的步骤如下:1. 引入Redis依赖:在项目的pom.xml(如果使用Maven)中添加Redis的...
    99+
    2023-09-04
    redis
  • 如何在java项目中操作Redis缓存
    这篇文章给大家介绍如何在java项目中操作Redis缓存,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.导入必须的Jar包使用Java操作Redis需要两个必须的Jar包:jedis-2.5.1.jar 和 ...
    99+
    2023-05-31
    java redis
  • 怎么在ssm项目中使用redis缓存查询数据
    怎么在ssm项目中使用redis缓存查询数据?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。xml配置:<bean id=&qu...
    99+
    2022-10-18
  • SpringBoot项目中使用redis缓存的方法步骤
    本文介绍了SpringBoot项目中使用redis缓存的方法步骤,分享给大家,具体如下:Spring Data Redis为我们封装了Redis客户端的各种操作,简化使用。 - 当Redis当做数据库或者消息队列来操作时,我们一般使用Red...
    99+
    2023-05-30
    spring boot redis
  • 浅谈如何在项目中使用Spring Cloud Alibaba Sentinel组件
    目录Sentinel 是什么Sentinel与Hystrix的区别 Sentinel分为两大部分:一、控制台(Dashboard) 二、搭建客户端1.在自己的项目...
    99+
    2022-11-12
  • Redis通过在Spring Boot项目中使用实现集中式缓存
    这篇文章将为大家详细讲解有关Redis通过在Spring Boot项目中使用实现集中式缓存,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 利用Spring Initializr来新建一个sp...
    99+
    2023-05-31
    springboot 集中 redis
  • Spring项目中使用Cache Redis实现数据缓存
    目录Spring项目中实现数据缓存一、Spring Cache + Redis 介绍二、项目中集成1. 引入依赖2. 添加 redis 配置类3. 配置文件增加 redis 配置4....
    99+
    2022-11-13
  • SpringBoot+Mybatis项目中如何使用Redis做Mybatis的二级缓存
    这篇文章给大家分享的是有关SpringBoot+Mybatis项目中如何使用Redis做Mybatis的二级缓存的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。介绍使用mybatis时可以使用二级缓存提高查询速度,...
    99+
    2023-05-30
    springboot redis mybatis
  • 利用Redis进行数据缓存的项目实践
    目录1. 引言2. 将信息添加到缓存的业务流程3. 实现代码3.1 代码实现(信息添加到缓存中)3.2 缓存更新策略3.3 实现主动更新4. 缓存穿透4.1 解决缓存穿透(使用空对象...
    99+
    2022-11-13
  • 浅谈vue3在项目中的逻辑抽离和字段显示
    目录逻辑分层将各个区域业务分开这样做的优势这样的场景应该如何处理优化reactive 不一定非要写在setup函数中如何在页面上直接显示值逻辑分层 我们在使用vue3开发项目的时候...
    99+
    2022-11-12
  • Ehcache缓存框架如何在Java项目中使用
    今天就跟大家聊聊有关Ehcache缓存框架如何在Java项目中使用 ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言JAVA缓存实现方案有很多,最基本的自己使用Map去构建缓存,或...
    99+
    2023-05-31
    java ehcache ava
  • Redis在项目中的使用(JedisPool方式)
    springboot中redis相关配置 1、pom.xml中引入依赖 <dependency> <groupId>redis.clients<...
    99+
    2022-11-12
  • 如何在java项目中使用redis
    本篇文章给大家分享的是有关如何在java项目中使用redis,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、首先下载jar包放到你的工程中2、练习package c...
    99+
    2023-05-31
    redis java ava
  • SpringBoot项目中怎么使用缓存Cache
    本文小编为大家详细介绍“SpringBoot项目中怎么使用缓存Cache”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot项目中怎么使用缓存Cache”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-06
  • Redis在项目中的使用方法有哪些
    本篇内容介绍了“Redis在项目中的使用方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springboot中redis相关配置po...
    99+
    2023-06-22
  • 浅谈Redis在分布式系统中的协调性运用
    在分布式系统中,各个进程(本文使用进程来描述分布式系统中的运行主体,它们可以在同一个物理节点上也可以在不同的物理节点上)相互之间通常是需要协调进行运作的,有时是不同进程所处理的数据有依赖关系,必须按照一定的...
    99+
    2022-06-04
    分布式 浅谈 系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作