技术栈入门-------Redis

news2025/1/27 13:02:51

使用redis的准备工作

1、在虚拟机上安装redis(前提是安装了docker容器)

上面使用到的命令

docker pull redis
mkdir -p /mydata/redis/conf

docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

2、修改reids.conf配置文件让redis中的数据持久化

同上mysql配置文件一样,输入appendonly yes后保存

最后重启redis

这样redis的数据就从内存中存到了磁盘中

3、常用操作

(1)使用redis 镜像执行redis-cli 命令连接

进到了redis容器内部

docker exec -it redis redis-cli

4、添加redis依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

5、application.properties配置文件里配置redis主机地址

spring.redis.host=192.168.241.128

本商城项目哪里用到了redis

秒杀服务

1、秒杀服务中定时上架秒杀商品的uploadSeckillSkuLatest3Days方法的实现中用到

(1)注入StringRedisTemplate (其实就是java中操作redis的类)

   @Autowired
    private StringRedisTemplate redisTemplate;

(2)定义了三个存入redis的前缀

//秒杀活动的前缀    
private final String SESSION__CACHE_PREFIX = "seckill:sessions:";
//秒杀商品的前缀
private final String SECKILL_CHARE_PREFIX = "seckill:skus";
//秒杀库存的前缀
private final String SKU_STOCK_SEMAPHORE = "seckill:stock:";    //+商品随机码

(3)常用的操作

1>判断redis中有没有这个key,有就返回true,没有就返回false

  Boolean hasKey = redisTemplate.hasKey(key);

2> 以集合的方式向左边批量添加元素(其实就是给指定的key值批量添加多个value值)

 redisTemplate.opsForList().leftPushAll(key,skuIds);

3>给redis中HashMap结构的Hash值绑定操作(也就是以后根据这个Hash值来增删改查)

//SECKILL_CHARE_PREFIX=seckill:skus(seckill:skus就是Hash值)
BoundHashOperations<String, Object, Object> operations = 
     redisTemplate.boundHashOps(SECKILL_CHARE_PREFIX);

4>HashMap结构存入redis缓存和取出key对应的value值

//HashMap结构存入redis缓存
operations.put(key,value);
//HashMap结构取出key对应的value值
String skuInfoValue = hashOps.get(key);

5> 模糊获取所有的keys

//从Redis中查询到所有key以seckill:sessions开头的所有数据
//(其实就是查找所有redis里的秒杀活动的信息)
Set<String> keys = redisTemplate.keys(SESSION__CACHE_PREFIX + "*");

6> 取出这个key对应的所有值

//2、获取这个秒杀场次需要的所有商品信息也就是key对应的value(这个key是当前秒杀活动的key)
//-100到100表示取出所有的key对应的值
List<String> range = redisTemplate.opsForList().range(key, -100, 100);

7> 根据多个key来获取多个key对应的值

//这个keys是List<String>集合
List<String> listValue = hasOps.multiGet(keys);

8>具体对象和Json字符串互转(注意这里是需要导入下面的依赖才能用)

//把Json字符串转为具体的对象
具体对象 具体对象实例 = JSON.parseObject(Json字符串, 具体对象.class);
//下面是把items的Json字符串转为SeckillSkuRedisTo对象
例如: SeckillSkuRedisTo redisTo = JSON.parseObject(items, SeckillSkuRedisTo.class);
 
//把具体对象转为Json字符串(redisTo是具体对象的实例)
 String seckillValue = JSON.toJSONString(redisTo);
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.72</version>
  <scope>compile</scope>
</dependency>

9>setIfAbsent方法

//setIfAbsent方法如果为空就set值,并返回1,如果存在(不为空)不进行操作,并返回0
Boolean aBoolean = redisTemplate.opsForValue()
.setIfAbsent(key, value, 超时时间, TimeUnit.MILLISECONDS);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python相关软件下载教程

前言 想要在电脑端运行python程序&#xff0c;需要先下载三个软件&#xff1a;Python解释器&#xff0c;编辑器&#xff08;使用Visual Studio Code&#xff0c;简称VS Code&#xff09;&#xff0c;python软件包管理系统&#xff08;简称pip&#xff09;。 一、MacOS系统安装…

如何使用ArcGIS进行点抽稀(优化版)

概述 有的时候我们手上的数据很密集&#xff08;比如POI数据&#xff09;&#xff0c;全部加载出来会很挤&#xff0c;在我们只需要部分数据的情况下就需要对其进行抽稀&#xff0c;这里为大家介绍一种比较简单的抽稀方法&#xff0c;希望能对大家有所帮助。 按百分比抽稀 在…

ICG-Hydrazide,用于光热治疗或光动力治疗

ICG能够强烈地吸收光能将其转化为热能或产生单线态氧&#xff0c;可用于光热治疗(PTT)或光动力治疗(PDT)。 英文名称&#xff1a;ICG-Hydrazide 外观&#xff1a;固体/粉末 质量纯度&#xff1a;95% 储存条件&#xff1a;-20℃ 结构式&#xff1a; 凯新生物运输说明: 极低…

Linux学习-87-LNMP一键安装过程

17.16 LNMP安装的前期准备&#xff08;LNMP一键安装包下载&#xff09; 手工安装 LNMP 环境&#xff0c;那么同样需要安装大概 10多个源码包&#xff08;根据版本和功能不同而不同&#xff09;。不过&#xff0c;现在网上非常流行的 LNMP 环境的搭建过程是采用 LNMP 一键安装包…

25岁,放弃4年所学专业,年薪20W+,我选择了转行。

25岁,没被迫转行, 是主动选择转行&#xff0c;放弃海外20W年薪“稳定”生活&#xff0c;目前已辞职&#xff0c;正在休整准备寻找工作中。希望我的经历可以给大家带来一点启发和借鉴。 首先自我介绍下。90后大叔&#xff0c;土木工程专业&#xff0c;2017年毕业于中南搬砖摇篮…

非零基础自学Golang 第12章 接口与类型 12.6 小结 12.7 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第12章 接口与类型12.6 小结12.7 知识拓展12.7.1 非侵入式接口第12章 接口与类型 12.6 小结 了解什么是鸭子类型。掌握接口的定义与实现。了解什么是接口嵌入。掌握空接口的常见用法&#xff0c;如空接口的赋值操作。掌握类型断…

C语言知识学习归纳总结(逐梦篇专栏合集)

上一专栏: 项目实战合集 逐梦编程&#xff0c;让中华屹立世界之巅。 简单的事情重复做,重复的事情用心做,用心的事情坚持做&#xff1b; 文章目录前言一、逐梦篇目录合集二、不忘初心"Hello world"总结壁纸&#xff08;与你同在&#xff09;前言 不知不觉中&#x…

详解事务:Mysql事务、Spring事务、分布式事务

详解事务&#xff1a;Mysql事务、Spring事务、分布式事务&#xff08;一&#xff09;Mysql事务【1】4种隔离级别【2】测试案例&#xff08;二&#xff09;Spring事务【1】准备测试代码&#xff08;1&#xff09;添加依赖&#xff08;2&#xff09;配置文件&#xff08;3&#x…

《classnames源码》阅读笔记

源码目录总览 参考官方文档中的内容&#xff0c;我们可以知道classnames 有一个主要版本&#xff08;index&#xff09;和两个替代版本 &#xff08;分别是dedupe 和 bind&#xff09;。在看目录的时候也可以发现 classnames 具有多个对外暴露的入口。 index.js是classnames的主…

Spring MVC【参数的获取与数据返回】

Spring MVC【参数的获取与上传】&#x1f34e;一. 获取参数&#x1f352;1.1 获取单个参数&#x1f352;1.2 获取多个参数&#x1f352;1.3 获取多个参数&#x1f352;1.4 获取URL中参数 (PathVariable)&#x1f34e;二. 上传文件 (RequestPart)&#x1f352;2.1 postman模拟上…

目标检测论文解读复现【NO.23】FS-YOLOv5:轻量化红外目标检测方法

前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

33个CadQuery程序化建模实例

本文介绍的33个建模示例可以帮助你了解如何使用 CadQuery 构建3D对象。示例是从简单到复杂组织起来的&#xff0c;因此按顺序学习它们是吸收它们的最佳方式。 1、简易矩形板 最简单的例子&#xff0c;一个矩形盒子&#xff1a; result cadquery.Workplane("front&qu…

食品加工企业自营商城小程序开发,帮助企业增加销售渠道,提高销量

随着生活水平的不断提高&#xff0c;人们对于食品质量提出了更高的要求。传统人们购买食品时只能到超市或者市场进行食品采购&#xff0c;需要花费一定的时间和精力&#xff0c;而且经过多层中间商赚取差价的原因性价比也并不高。在移动电商的时代发展下&#xff0c;很多企业商…

『 canvas 动画』为了让老婆彻底理解正弦和余弦,我连夜制作了这个效果

前言 最近在做 canvas 相关的效果时&#xff0c;经常用到三角函数以及正/余弦相关的数字知识&#xff0c;这些知识点都是我们在初中的时候就学过的&#xff0c;但是这么多年基本已经忘的差不多了&#xff0c;刚好最近又学到了一个用 canvas 来实现的正/余弦动画效果&#xff0…

成功转行Python工程师,年薪30W+,经验总结都在这

这是给转行做Python的小白的参考&#xff0c;无论是从零开始&#xff0c;或者是转行的朋友来说&#xff0c;这都是值得一看的&#xff0c;也是可以作为一种借鉴吧。 而且我决定转行IT&#xff08;互联网&#xff09;行业&#xff0c;其实理由也很简单&#xff0c;不用动体力&a…

循环冗余编码(CRC编码)与海明码(考研前突击一下QAQ)

循环冗余编码&#xff08;CRC编码&#xff09;与海明码 一.环冗余编码 1.循环冗余编码的形成 生成多项式&#xff1a;G1011 表示成生成多项式为G(x)X3X1X^3X1X3X1 示例&#xff1a; 假设信息字节为&#xff1a;F1001010 选取生成多项式&#xff08;默认&#xff09;G1011 将…

2022年下半年部分团队的总结

这是 2021 年年底的汇报。 这是 2022 年上半年的汇报。 踏石留印 抓铁有痕 CSDN 是中国 IT 人士学习&#xff0c;成长&#xff0c;成功的平台。除了一些创新的探索之外&#xff0c; 20 多年来&#xff0c;CSDN 团队为这个平台开发和维护着各种基本功能和服务&#xff0c;还进…

自动化测试技术笔记(一):前期调研怎么做

昨天下午在家整理书架&#xff0c;把很多看完的书清理打包好&#xff0c;预约了公益捐赠机构上门回收。 整理的过程中无意翻出了几年前的工作记事本&#xff0c;里面记录了很多我刚开始做自动化和性能测试时的笔记。虽然站在现在的角度来看&#xff0c;那个时候无论是技术细节…

“ 这片绿茵从不缺乏天才,努力才是最终的入场券——梅西 ”

前言 想了又想还是忍不住想发布一篇文章来纪念一下2022年的卡塔尔世界杯&#xff0c;这伟大的诸神黄昏之战。4年一届的世界杯像是一把衡量时间的坐标&#xff0c;正所谓青春不过几届世界杯&#xff01;2014巴西世界杯在上初一&#xff0c;2018俄罗斯世界杯在上高二&#xff0c;…

如何成为一名合格的互联网大厂Python工程师?

Python开发工程师&#xff0c;是一个在IT行业圈子里一直都很热门的话题&#xff0c;无论是像腾讯、百度这样的大型公司&#xff0c;还是刚刚起步的初创公司&#xff0c;都会招python开发工程师。 python已成为越来越多开发者的开发语言选择&#xff0c; 而python开发工程师工资…