windows搭建redis服务

windows搭建redis服务

Windows 下 Redis 安装与配置 教程

下载软件

1、下载链接 https://github.com/microsoftarchive/redis/releases
在这里插入图片描述

安装教程,查看是否生效

1、安装包如图所示 Redis-x64-3.0.504.msi
在这里插入图片描述
2、双击 msi 安装包
双击 msi 安装程序,打开安装向导,点击 next
3、接受终端用户协议
接受终端用户协议,点击 next
4、选择安装路径
选择安装路径,并勾选将安装路径添加的系统 PATH 环境变量
5、设置服务端口
设置 Redis 服务端口,默认 6379,点击 next
6、设置最大内存限制
设置最大内存限制,点击 next
7、完成安装
点击 install 完成安装
8、验证 Redis
打开"任务管理器",可以看到服务列表下启动了 Redis 服务
在这里插入图片描述
9、命令行操作
打开 cmd 窗口,输入 redis-cli 连接 redis服务,并做简单验证
在这里插入图片描述

SpringBoot中集成Redis服务,实现入门基本操作

yml配置基本信息

  redis:host: localhostport: 6379
#    password: 0database: 0 # 几号库lettuce:pool:max-active: 8 # 最大连接max-idle: 8 # 最大空闲连接min-idle: 0 # 最小空闲连接max-wait: 100ms # 连接等待时间

在这里插入图片描述

spring对应redis缓存情况依赖

 <!--redis与pool2搭配使用--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency>

单元测试

字符串类型

// 添加操作
client.opsForValue().set(key, "v1", DateConstant.TIME_OF_DAY, TimeUnit.SECONDS );
// 获取操作
String getValue = client.opsForValue().get(key);
// 累加
client.opsForValue().increment(counter);
// 减一
client.opsForValue().decrement(counter);
// 存储list<map>
String multiMapStr = JSON.toJSONString(multiMapList);
client.opsForValue().set("str:multiusers", multiMapStr, DateConstant.TIME_OF_DAY, TimeUnit.SECONDS);

hash类型

// 添加单个字段元素
client.opsForHash().put("hash:user:single","name","pmb");
// 添加一个map
client.opsForHash().putAll("hash:user:all", handleMap);
// 返回key集合
Set<Object> keyList = client.opsForHash().keys("hash:user:all");
// 返回value集合
List<Object> valueList = client.opsForHash().values("hash:user:all");

list类型

// 右侧添加元素
client.opsForList().rightPush(key, "16607024161");
// 右侧删除元素
client.opsForList().rightPop(key);
// 元素个数
client.opsForList().size(key);
// 根据指定下标查找元素
client.opsForList().index(key, 0);
// 获取某个范围元素
client.opsForList().range(key, 0, size - 1);
// 实现栈 先进后出
client.opsForList().leftPush(key,"1");
client.opsForList().leftPush(key,"2");
client.opsForList().leftPush(key,"3");
client.opsForList().leftPop(key);
client.opsForList().leftPop(key);
client.opsForList().leftPop(key);
// 实现队列 先进先出
client.opsForList().leftPush(key,"one");
client.opsForList().leftPush(key,"two");
client.opsForList().rightPop(key);
client.opsForList().rightPop(key);

set类型

// 添加元素
client.opsForSet().add(key, "1","2","3");
// 返回所有元素
Set<String> members = client.opsForSet().members(key);
// 某个元素是否存在
Boolean member = client.opsForSet().isMember(key, "2");client.opsForSet().add(intersection, "1","2");
// 交集
Set<String> intersectList = client.opsForSet().intersect(key, intersection);
// 并集
Set<String> unionList = client.opsForSet().union(key, intersection);
// 差集
Set<String> differenceList = client.opsForSet().difference(key, intersection);

zset类型

// 顺序添加
client.opsForZSet().add(key, "one", 1);
// 返回所有元素
Set<String> range = client.opsForZSet().range(key, 0, size - 1);
// 根据score返回用户
Set<String> userList = client.opsForZSet().rangeByScore(key, 1, 60);
// 删除指定用户
client.opsForZSet().remove(key, "two");
// 获取指定score区间的用户个数
Long count = client.opsForZSet().count(key, 1, 20);
// 返回倒序的用户信息
Set<String> InvertedOrder = client.opsForZSet().reverseRange(key, 0, -1);
//
Set<ZSetOperations.TypedTuple<String>> allLis = client.opsForZSet().rangeWithScores(key, 0, -1);

案例说明

package com.geekmice.springbootselfexercise.cache;import com.geekmice.springbootselfexercise.SpringBootSelfExerciseApplication;
import com.geekmice.springbootselfexercise.constant.DateConstant;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;/*** @BelongsProject: spring-boot-self-exercise* @BelongsPackage: com.geekmice.springbootselfexercise.cache* @Author: xxx* @CreateTime: 2023-12-09  03:04* @Description: 字符串操作缓存* @Version: 1.0*/
@Slf4j
@SpringBootTest(classes = SpringBootSelfExerciseApplication.class)
@RunWith(SpringRunner.class)
public class CacheTest {@Autowiredprivate RedisTemplate<String,String> client;/*** 字符串类型缓存操作*/@Testpublic void handleStrTest(){String key = "k1";String currentNum;// 用法1:key是否存在Boolean value = client.hasKey(key);log.info("[{}]是否存在[{}]" , key,value);// 用法2:添加元素client.opsForValue().set(key, "v1", DateConstant.TIME_OF_DAY, TimeUnit.SECONDS );// 用法3:获取元素String getValue = client.opsForValue().get(key);log.info("getValue : [{}]" , getValue);// 用法4:计数String counter ="counter:key";client.opsForValue().set(counter, "0", DateConstant.TIME_OF_DAY, TimeUnit.SECONDS);client.opsForValue().increment(counter);client.opsForValue().increment(counter);currentNum = client.opsForValue().get(counter);log.info("currentNum : [{}]" , currentNum);client.opsForValue().decrement(counter);currentNum = client.opsForValue().get(counter);log.info("currentNum : [{}]" , currentNum);if(Objects.nonNull(value)){Assert.assertTrue(value);}}}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GLAB | CCNA+HCIA=融合课-最新开课通知

敲重点! 12月17日 CCNAHCIA 周日开课啦&#xff01; CCNA&#xff08;Cisco Certified Network Associate&#xff09;认证是Cisco售后工程师认证体系的入门认证&#xff0c;也是Cisco各项认证中级别最低的技术认证通过CCNA认证可证明你已掌握网络的基本知识&#xff0c;并能…

Truffle的基础语法与js测试语法

truffle编译 truffle compiletruffle部署 truffle migratetruffle测试 使用test文件夹下的所有文件测试 truffle test使用单个文件 测试 truffle test 文件所在位置assert断言 assert.equal 是一种常见的断言函数&#xff0c;用于测试两个值是否相等。它接受两个参数&…

在Asp.Net Core中启用Http响应压缩

无论是开发网站&#xff0c;还是开发Api。很多时候为了节约网络流量我们需要对请求金星压缩处理以减少消息传递过程中的资源消耗&#xff0c;并且多数情况有利于应用发挥更好的性能&#xff08;响应压缩在服务端处理&#xff0c;使用服务器资源&#xff09;。 在Asp.Net Core中…

秒级监控、精准迅速:全面保障业务可用性 | 开源日报 No.101

louislam/uptime-kuma Stars: 41.1k License: MIT Uptime Kuma 是一个易于使用的自托管监控工具&#xff0c;主要功能和核心优势包括&#xff1a; 监控 HTTP(s) / TCP / HTTP(s) 关键词 / HTTP(s) Json 查询 / Ping / DNS 记录等服务的可用性提供时尚、响应迅速且良好用户体验…

基于springboot的大学生兼职信息管理系统(源码+数据库+文档)

摘要 基于Spring Boot的大学生兼职信息管理系统是一个为大学生和兼职公司提供服务的平台。通过该系统&#xff0c;大学生可以方便地寻找兼职工作机会&#xff0c;而兼职公司可以发布、管理和筛选合适的兼职信息。首先&#xff0c;系统采用了Spring Boot作为开发框架&#xff0…

【设计模式-4.4】行为型——模板方法模式

说明&#xff1a;本文介绍设计模式中行为型设计模式中的&#xff0c;模板方法模式&#xff1b; 生存 模版方法模式是行为型设计模式&#xff0c;关注于对象的行为。在《秒懂设计模式》&#xff08;刘韬 著&#xff09;中举了一个例子&#xff0c;例如哺乳动物的生存技能&…

MacOS 14.1 配置kerberos认证

MacOS 14.1 配置kerberos认证 MacOS 14.1 配置kerberos认证krb5.conf票据显示程序问题参考地址 MacOS 14.1 配置kerberos认证 原操作系统为 10.14.*&#xff0c;因安装别的软件失败&#xff0c;不想去找旧版本了&#xff0c;所以把OS直接升级到最新版的14.1啦&#xff0c;升级…

DevEco Studio IDE 创建项目时候配置环境

DevEco Studio IDE 创建项目时候配置环境 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、在配置向导的时候意外关闭配置界面该如何二次配置IDE环境。 打开IDE的界面是这样的。 点击Create Project进行环境配置。 点击OK后出现如…

手写线程池

文章目录 线程池最主要有两部分&#xff0c;阻塞队列和线程池&#xff0c;阻塞队列使用双端队列&#xff0c;我们需要定义队列的容量、 还需要锁来保证将任务放入队列和取出队列的正确性、使用Reentrentlock定义两个条件变量&#xff1a;生产者条件变量和消费者条件变量&#x…

系列学习前端之第 3 章:一文精通 css

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料&#xff1a; 链接: 百度网盘 请输入提取码 提取码: 6666 一、CSS基础 1. CSS简介 CSS 的全称为&#xff1a;层叠样式表 ( Cascading Style Sheets ) 。 CSS 也是一种标记语言&#xff0c;用于给 HTML 结构设…

【微软技术栈】发布自己造的轮子 -- 创建Nuget包(分布操作)

目录 1、您的项目 2、创建 .nuspec 文件 3、一张图片胜过一千个拉取请求 4、包括自述文件 MD 文件 5、构建软件包 6、将包部署到 Nuget.Org 7、手动上传软件包 8、自动化和脚本化部署 9、我们如何构建和部署 ErrLog.IO Nuget 包 10、Nuget统计数据 11、最后的思考 创建 Nuget 包…

关于ASJ 系列剩余电流动作继电器的详细介绍-安科瑞 蒋静

1 概述 ASJ 系列剩余电流动作继电器可与低压断路器或低压接触器等组成组合式剩余电流保护装置&#xff0c;主要适用 于交流 50Hz &#xff0c;额定电压 400V 及以下的 TT 和 TN 系统配电线路&#xff0c;用来对电气线路进行接地故障保护&#xff0c;防止 接地故障电…