Java_中间件——Redis

ops/2024/9/20 4:03:09/ 标签: java, 中间件, redis

 Redis

介绍:

        Redis是一个基于内存key-value结构数据库(MySQL是通过数据文件方式存储在磁盘上,数据结构是二维表)

特点:

更改配置文件:

使用密码:

        redis默认是不需要密码的,如果要设置密码,需要:打开redis.windows.conf,搜索pass (加一个空格),找到这个部分:# requirepass foobared,foobared部分改为你想设置的密码,然后去掉注释#,就可以了。

使用:

启动服务

        在当前下载redis的文件路径下打开cmd,输入redis-server.exe redis.windows.conf,回车

        启动服务后,可以选择两种方式进行连接

连接:

cmd方式:        

        在这个文件路径下再打开一个cmd,注意上面打开那个cmd不要关,然后输入redis-cli.exe,这里返回127.0.0.1:6379就说明连上了

图形界面方式:

        下载图形化界面Another Redis Desktop Manager,新建连接,输入配置信息,进行连接

常用数据类型:

各种数据类型的特点:

常用命令:

字符串操作命令:

哈希操作命令:

列表操作命令:

集合操作命令:

有序集合操作命令:

通用命令:

 操作Redis:

        想要了解Redis的基础知识及使用方法可以参考作者另一边文章《Java_中间件——Redis》

Redis的Java客户端:

        下面我们使用Spring Data Redis来操作Redis

Spring Data Redis使用方式:

配置类RedisTemplate:
java">@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {log.info("开始创建redis模板对象...");RedisTemplate redisTemplate = new RedisTemplate();//设置redis连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置redis key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}}
代码演示:
java">    @Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testRedisTemplate() {System.out.println(redisTemplate);//操作字符串ValueOperations valueOperations = redisTemplate.opsForValue();//操作HashHashOperations hashOperations = redisTemplate.opsForHash();//操作ListListOperations listOperations = redisTemplate.opsForList();//操作setSetOperations setOperations = redisTemplate.opsForSet();//操作有序集合ZSetOperations zSetOperations = redisTemplate.opsForZSet();}/*** 操作字符串类型的数据*/@Testpublic void testStirng() {// set get setex setnxredisTemplate.opsForValue().set("city","北京");String city = (String) redisTemplate.opsForValue().get("city");System.out.println(city);redisTemplate.opsForValue().set("code","6562",60, TimeUnit.SECONDS);redisTemplate.opsForValue().setIfAbsent("lock","1");redisTemplate.opsForValue().setIfAbsent("lock","2");}/*** 操作哈希类型的数据*/@Testpublic void testHash() {//hset hget hdel hkeys hvalsHashOperations hashOperations = redisTemplate.opsForHash();hashOperations.put("100","name","xiaobai");hashOperations.put("100","age","20");String name = (String) hashOperations.get("100", "name");System.out.println(name);Set keys = hashOperations.keys("100");System.out.println(keys);List values = hashOperations.values("100");System.out.println(values);hashOperations.delete("100","age");}/*** 操作列表类型的数据*/@Testpublic void testList() {// lpush lrange rpop llenListOperations listOperations = redisTemplate.opsForList();listOperations.leftPushAll("mylist","a","b","c");listOperations.leftPush("mylist","d");List mylist = listOperations.range("mylist", 0, -1);System.out.println(mylist);listOperations.rightPop("mylist");Long size = listOperations.size("mylist");System.out.println(size);}/*** 操作集合类型的数据*/@Testpublic void testSet() {// sadd smembers scard sinter sunion sremSetOperations setOperations = redisTemplate.opsForSet();setOperations.add("set1","a","b","c");setOperations.add("set2","b","c","d");Set set1 = setOperations.members("set1");System.out.println(set1);Long size = setOperations.size("set1");System.out.println(size);Set intersect = setOperations.intersect("set1", "set2");System.out.println(intersect);Set union = setOperations.union("set1", "set2");System.out.println(union);setOperations.remove("set1","a","b");}/*** 操作有序集合类型的数据*/@Testpublic void testZSet() {// zadd zrange zincrby zremZSetOperations zSetOperations = redisTemplate.opsForZSet();zSetOperations.add("zset1","a",10);zSetOperations.add("zset1","b",11);zSetOperations.add("zset1","c",9);Set zset1 = zSetOperations.range("zset1", 0, -1);System.out.println(zset1);zSetOperations.incrementScore("zset1","c",10);zSetOperations.remove("zset1","a","b");}/*** 通用命令操作*/@Testpublic void testCommon() {// keys exists type delSet keys = redisTemplate.keys("*");System.out.println(keys);Boolean name = redisTemplate.hasKey("name");Boolean set1 = redisTemplate.hasKey("set1");for (Object key : keys) {DataType type = redisTemplate.type(key);System.out.println(type.name());}redisTemplate.delete("mylist");}


http://www.ppmy.cn/ops/48579.html

相关文章

linux为什么不是实时操作系统

Linux为什么不是实时操作系统? 从我们接触Linux系统开始,一直听到的都是它是非实时操作系统,怎么理解这个非实时呢? 我的理解,非实时,就是中断响应不及时,任务调度不及时。那么,真…

Python 越来越火爆

Python 越来越火爆 Python 在诞生之初,因为其功能不好,运转功率低,不支持多核,根本没有并发性可言,在计算功能不那么好的年代,一直没有火爆起来,甚至很多人根本不知道有这门语言。 随着时代的…

iSlide最新版软件安装包下载+详细安装步骤

​iSlide 是一款拥有30W素材的PPT高效设计软件,可提高90%工作效率,现全球已有超过1400万用户,智能排版原创高品模板可商用图片,真正摆脱PPT的束缚,把精力用在该用的地方。 安 装 包 获 取 地 址: iSlide麦…

使用canvas制作一个无人机旋转特效

​ 使用HTML5的Canvas API来制作一个无人机旋转特效。这个特效将包括一个无人机图标(你可以使用任何你喜欢的图标),它会在一个固定的位置旋转。 首先,我们需要创建一个HTML文件,然后在其中添加一个canvas元素。canvas…

机器学习笔记 - LoRA:大型语言模型的低秩适应

一、简述 1、模型微调 随着大型语言模型 (LLM) 的规模增加到数千亿,对这些模型进行微调成为一项挑战。传统上,要微调模型,我们需要更新所有模型参数。这也称为完全微调 (FFT) 。下图详细概述了此方法的工作原理。 完全微调FFT 的计算成本和资源需求很大,因为更新每…

图片转Base64

在Python中, 可以使用内置的base64模块以及图像处理库(如PIL, 也称为Pillow)来将图片转换为Base64编码的字符串. 以下是一个简单的示例, 说明如何实现这一过程:首先, 需要安装Pillow库(如果尚未安装), 可以使用pip来安装: pip install pillow然后, 可以使用以下Python代码将图片…

宋街宣传活动-循环利用,绿色生活

善于善行回收团队是一支致力于推动环保事业,积极倡导和实践绿色生活的志愿者队伍。我们的宗旨是通过回收再利用,减少资源浪费,降低环境污染,同时提高公众的环保意识,共同构建美丽和谐的家园。 善于善行志愿团队于2024年…

flask_sqlalchemy时间缓存导致datetime.now()时间不变问题

问题是这样的,项目在本地没什么问题,但是部署到服务器过一阵子发现,这个时间会在某一刻定死不变。 重启uwsgi后,发现第一条数据更新到了目前最新时间,过了一会儿再次发送也变了时间,但是再过几分钟再发就会…

Python库

Python库 babel huey 图片视频处理 moviepy 一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切、连接、标题插入)、视频合成(也称非线性编辑)、视频处理或创建高级效果 patchworklib 一个专注于图像拼接和合成的Python库 patchworklib 一个专注与图…

02 DHCP原理与配置

目录 2.1 DHCP工作原理 1. 了解DHCP服务 2. 使用DHCP的好处 3. DHCP的分配方式 4. DHCP的租约过程 1. 客户机请求IP地址 2. 服务器响应 3. 客户机选择IP地址 4. 服务器确定租约 5. 重新登录 6. 更新租约 2.2 使用DHCP动态配置主机地址 2.2.1 配置DHCP服务器 1. 安装DHCP服务器…

深入解析MongoDB中的锁机制

目录 一、MongoDB简介 二、MongoDB锁机制 三、锁的实践影响 3.1 高并发写入导致的写锁案例 一、MongoDB简介 MongoDB 作为一种非关系型文档数据库,在现代应用中扮演着极其重要的角色,尤其在处理大规模、高并发、灵活数据模型的场景下。MongoDB 具有如…

为什么需要在微服务中使用链路追踪?Spring Cloud 可以选择哪些微服务链路追踪方案?

引言:在当今的软件开发领域中,微服务架构已经成为了构建大型应用程序的主流方式之一。随着微服务数量的增加和服务之间复杂性的提高,对于了解和监控服务之间的调用关系变得越来越重要。而链路追踪技术的出现,为解决这一难题提供了…

把服务器上的镜像传到到公司内部私有harbor上,提高下载速度

一、登录 docker login https://harbor.cqxyy.net/ -u 账号 -p 密码 二、转移镜像 minio 2024.05版 # 指定tag docker tag minio/minio:RELEASE.2024-05-10T01-41-38Z harbor.cqxyy.net/customer-software/minio:RELEASE.2024-05-10T01-41-38Z# 推送镜像 docker push harbo…

【TensorFlow深度学习】DQN(Deep Q-Network)算法详解

DQN(Deep Q-Network)算法详解 DQN(Deep Q-Network)算法详解:深度强化学习的里程碑DQN算法原理代码实现结语 DQN(Deep Q-Network)算法详解:深度强化学习的里程碑 在强化学习的浩瀚宇…

动态防护开启教程和体验感受

动态防护是雷池 WAF 社区版在版本 [6.0.0] 中新增的一个功能,它属于站点高级防护的一部分。动态防护的主要作用是自动动态加密网站的 HTML 和 JavaScript 源码,目的是阻止爬虫和攻击自动化程序的分析。这项功能在 [6.0.0] 版本中标记为 BETA 版本&#x…

Rust anyhow 简明教程

anyhow 是 Rust 中的一个库,旨在提供灵活的、具体的错误处理能力,建立在 std::error::Error 基础上。它主要用于那些需要简单错误处理的应用程序和原型开发中,尤其是在错误类型不需要被严格区分的场景下。 以下是 anyhow 的几个关键特性&…

陕西移动联合中兴通讯,赋能5G RedCap智慧工厂建设

前不久,陕西移动联合中兴通讯、高新兴等产业伙伴在中兴通讯西安智能终端生产基地顺利完成5G RedCap在智慧工厂的应用实践。本次实践证明了5G RedCap在智慧工厂场景下的应用可行性,为RedCap在工业智能制造行业的应用打下基础。   5G RedCap技术是5G-A实现…

Ubuntu软件操作的相关命令

更新源 : sudo apt-get update 安装包 : sudo apt-get install package 删除包 : sudo apt-get remove package 搜索软件包 : sudo apt-cache search package 获取包的相关信息,如说明、⼤⼩、版本等 : sudo apt-cache show package 重新安装包 : sudo apt-get…

机器视觉:光源的类型以及主要参数

光源在机器视觉中起着决定性的作用,决定了视觉算法的复杂性,也决定了视觉系统的精度和稳定性。光源用于突出目标物体的特征,增加目标物体与背景的对比度,克服环境光线的干扰。光源的选择与打光方式在视觉系统的前期评估中非常重要…

spring和Mybatis的各种查询

文章目录 六**、MyBatis的各种查询功能**6.1、查询一个实体类的对象6.2、查询一个list集合6.3、查询单个数据6.4、查询一条数据为Map集合6.5、查询多条数据为Map集合 七、**特殊SQL的执行**7.1、模糊查询7.2、批量删除7.3、动态设置表名7.4、添加功能获取自增的主键 八、**自定…