Redis入门到实战教程(基础篇)笔记

教学来源: 

Redis课程介绍导学_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1cr4y1671t?p=1一、Redis 入门

1.认识NoSQL

2.Redis在虚拟机中的安装和开机自启

Redis在虚拟机中安装和配置开机自启-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_69183322/article/details/138168301

3.Redis的数据结构

4.Redis的基本类型

(1) 字符串String类型

(2)哈希Hash类型

(3) 列表List类型

(4)集合Set类型

(5)有序集合类型

二、Redis的Java客户端Jedis

(1)Jedis简单示例

引入依赖:

        <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version></dependency>

代码示例:

package com.example.redisdemo;import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;import java.util.Map;@SpringBootTest
class RedisDemoApplicationTests {private Jedis jedis;@BeforeEachvoid setUp(){jedis = new Jedis("localhost",6379);
//密码
//       jedis.auth("123");jedis.select(0);}@Testvoid testString(){String result  = jedis.set("name","张四");System.out.println("result="+result);String name = jedis.get("name");System.out.println("name="+name);}@Testvoid testHash(){jedis.hset("user:1","name","Jack");jedis.hset("user:1","age","21");Map<String,String> map = jedis.hgetAll("user:1");System.out.println(map);}@AfterEachvoid tearDown(){if(jedis !=null){jedis.close();}}}

(2)Jedis连接池

在utils中写Jedis连接池的配置:

package com.example.redisdemo.utils;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class JedisConnectionFactory {private static  final JedisPool jedisPool;static {JedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(8);poolConfig.setMaxIdle(8);poolConfig.setMaxIdle(0);poolConfig.setMaxWaitMillis(1000);jedisPool = new JedisPool(poolConfig,"192.168.92.136",6379,1000,"123456");}public static Jedis getJedis(){return jedisPool.getResource();}
}

在test中进行测试:

package com.example.redisdemo;import com.example.redisdemo.utils.JedisConnectionFactory;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;import java.util.Map;@SpringBootTest
class RedisDemoApplicationTests {private Jedis jedis;@BeforeEachvoid setUp(){
//       jedis = new Jedis("192.168.92.136",6379);jedis = JedisConnectionFactory.getJedis();jedis.auth("123456");jedis.select(0);}@Testvoid testString(){String result  = jedis.set("name","张四");System.out.println("result="+result);String name = jedis.get("name");System.out.println("name="+name);}@Testvoid testHash(){jedis.hset("user:1","name","Jack");jedis.hset("user:1","age","21");Map<String,String> map = jedis.hgetAll("user:1");System.out.println(map);}@AfterEachvoid tearDown(){if(jedis !=null){jedis.close();}}}

三、SpringDataRedis

 (1)快速入门实例:

1.引入依赖

        <!--        Redis依赖--><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>

 2.在application.yml中进行配置

server:port: 8080spring:redis:host: 192.168.92.136port: 6379password: 123456lettuce:pool:max-active: 8 #最大连接max-idle: 8 #最大空闲连接min-idle: 0 #最小空闲连接max-wait: 100 #连接等待时间

3.Test中编写示例

package com.example.redisdemo;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;@SpringBootTest
class RedisDemoApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;@Testvoid testString(){redisTemplate.opsForValue().set("name","小龙");Object name = redisTemplate.opsForValue().get("name");System.out.println("name="+name);}}

(2)RedisTemplate序列化

配置序列化 config.RedisConfig

package com.example.redisdemo.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;@Configuration
public class RedisConfig {@Beanpublic  RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){RedisTemplate<String,Object> template = new RedisTemplate<>();//设置连接工厂template.setConnectionFactory(connectionFactory);//创建Json序列化工具GenericJackson2JsonRedisSerializer jsonRedisSerializer =new GenericJackson2JsonRedisSerializer();//设置Key的序列化template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());//设置Value的序列化template.setValueSerializer(jsonRedisSerializer);template.setHashValueSerializer(jsonRedisSerializer);return template;}}

创建实体 pojo.User

package com.example.redisdemo.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private Integer age;
}

在Test中编写测试用例

package com.example.redisdemo;import com.example.redisdemo.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;@SpringBootTest
class RedisDemoApplicationTests {@Autowiredprivate RedisTemplate<String,Object> redisTemplate;@Testvoid testString(){redisTemplate.opsForValue().set("name","小龙");Object name = redisTemplate.opsForValue().get("name");System.out.println("name="+name);}@Testvoid testSaveUser(){redisTemplate.opsForValue().set("user:100",new User("小虎",21));User user = (User) redisTemplate.opsForValue().get("user:100");System.out.println("user="+user);}}

报错可能没有引入Jackson依赖

        <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>

(3)序列化的另一种方式StringRedisTemplate

示例代码:

package com.example.redisdemo;import com.example.redisdemo.pojo.User;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;import java.util.Map;@SpringBootTest
class RedisDemoApplicationTests {@Autowiredprivate StringRedisTemplate stringRedisTemplate;//Json工具private static final ObjectMapper mapper = new ObjectMapper();@Testvoid testStringTemplate() throws JsonProcessingException{User user = new User("小明",20);//手动序列化String json = mapper.writeValueAsString(user);stringRedisTemplate.opsForValue().set("user:200",json);String val = stringRedisTemplate.opsForValue().get("user:200");//反序列化User user1 = mapper.readValue(val, User.class);System.out.println("user1:"+user1);}@Testvoid testHash(){stringRedisTemplate.opsForHash().put("user:400","name","小胡");stringRedisTemplate.opsForHash().put("user:400","age","21");Map<Object,Object> entries = stringRedisTemplate.opsForHash().entries("user:400");System.out.println("entries:"+entries);}}

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

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

相关文章

项目管理中常用的三个工具:甘特图、看板、燃尽图

在日常项目管理的实践中&#xff0c;为了更有效地追踪项目进度、优化资源配置和提高团队协作效率&#xff0c;管理者常常会借助一些工具来辅助工作。这些工具的本质在于将抽象复杂的项目管理任务具象化、简单化&#xff0c;以更直观、方便的方式呈现出来。 以下介绍项目管理中…

前端发送请求之fetch跟axios的区别

前端开发工程师在针对页面UI设计稿还原之后&#xff0c;还需要与后端开发工程师进行接口对接&#xff0c;发送请求获取后端接口数据后进行逻辑处理呈现给用户。 常见的发送请求的方式是&#xff1a;Fecth&#xff0c;Axios 以下概念来自AI Fecth与Axios的区别&#xff1a; AP…

2024.4.28 机器学习周报

目录 引言 Abstract 文献阅读 1、题目 2、引言 3、创新点 4、总体流程 5、网络结构 5.1、损失函数 5.2、Confidence Maps 5.3、Part Affinity Fields(PAFs) 5.4、多人的PAFs 6、实验 7、结论 深度学习 yolov8实现目标检测和人体姿态估计 Yolov8网络结构 yaml…

el-input-number 只能输入整数,最小值1,最大值5

<el-form-item label"排序" prop"name" > <el-input-number v-model"form.sort" placeholder"请输入唯一排序" :min1 :max"5" :precision"0" class"custom-input-number" /> </el-form-…

uniapp中vue写微信小程序的生命周期差别

根据uniapp官网里的生命周期&#xff0c;感觉不太对劲&#xff0c;就自己测试了几个&#xff0c;发现有所差别。 红字数字 为 实际测试生命周期顺序。 因为需要页面传参 后再 初始化数据&#xff0c;而onLoad(option)接收参数后&#xff0c;就已经过了create()了&#xff0c;所…

02_c/c++开源库ZeroMQ

1.安装 C库 libzmq sudo apt install libzmq3-dev 实例: https://zeromq.org/get-started/?languagec&librarylibzmq# 编译依赖: pkg-config --cflags --libs libzmq or cat /usr/lib/x86_64-linux-gnu/pkgconfig/libzmq.pc -isystem /usr/include/mit-krb5 -I/usr/in…

DSNeRF复现流程

创建虚拟环境安装依赖 conda create -n DSNeRF python3.7pip install -r requirements.txt下载LLFF数据放在创建的data文件下 https://drive.google.com/file/d/1RjhfcbsywOvw0ts1AFSri91mKANvEVOa/view?uspsharing 下载预先训练好的模型 bash download_models.sh渲染视频…

【Linux】进程间通信(共享内存、消息队列、信号量)

一、System V —— 共享内存&#xff08;详解&#xff09; 共享内存区是最快的 IPC 形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说&#xff0c;就是进程不再通过执行进入内核的系统调用来传递彼此的数…

C# WinForm —— 10 单选按钮与复选框的介绍与使用

单选按钮 RadioButton 一组单选按钮中&#xff0c;只能选择一个&#xff0c;互相排斥 常用属性、事件&#xff1a; 属性用途(Name)单选按钮的ID&#xff0c;在代码里引用的时候会用到,一般以 rb开头Text单选按钮旁边显示的 文本信息Checked单选按钮的勾选状态Appearance控制单…

【JavaScript】内置对象 ④ ( Math 内置对象常用方法 | 取绝对值 | 向下取整 | 向上取整 | 四舍五入取整 | 取随机数 )

文章目录 一、Math 内置对象常用方法1、计算绝对值 - Math.abs2、取整计算 - Math.floor 向下取整 / Math.ceil 向上取整 / Math.round 四舍五入3、随机数 - Math.random4、代码示例 - 猜随机数 一、Math 内置对象常用方法 1、计算绝对值 - Math.abs 向 Math.abs() 方法中 传入…

报错:测试报错postman(测试接口)

报错如下 c.e.exception.GlobalExceptionHandler : 异常信息&#xff1a; Content type multipart/form-data;boundary--------------------------952399813172082093419475;charsetUTF-8 not supported 解决&#xff1a; 异常信息 Content type multipart/form-data;boundary…

力扣-1832.判断句子是否全为字母句

思路: 首先&#xff0c;我们初始化了一个长度为 26 的布尔值列表 exist&#xff0c;所有值都为 False&#xff0c;表示所有字母初始都未出现过。然后&#xff0c;我们遍历输入的字符串 sentence 中的每个字符。对于每个字符&#xff0c;我们通过计算其 ASCII 码值减去字母 a 的…

Ansible 清单描述

系统&#xff1a;CentOS Linux release 7.9.2009 (Core) 安装Ansible : yum -y install epel-release yum -y install ansible 可以使用多种格式之一创建库存文件&#xff0c;最常见的格式是 INI 和 YAML。默认的INI文件在 /etc/ansible/hosts 清单的基础知识&#xff1a;格式…

深度学习从入门到精通—Transformer

1.绪论介绍 1.1 传统的RNN网络 传统的RNN&#xff08;递归神经网络&#xff09;主要存在以下几个问题&#xff1a; 梯度消失和梯度爆炸&#xff1a;这是RNN最主要的问题。由于序列的长距离依赖&#xff0c;当错误通过层传播时&#xff0c;梯度可以变得非常小&#xff08;消失…

【产品经理修炼之道】- 需求挖掘之手机话费充值

画原型图从来就不是面试考察的重点&#xff0c;分析、解决问题才是产品经理的核心能力。那么该如何积累产品经验呢&#xff1f;本文以以「手机话费充值」为案例&#xff0c;分享整个设计流程和思路&#xff0c;希望对你有所启发。 不少产品新人有个误区&#xff1a;产品经理的日…

C#带引导窗体的窗体设计方法:创建特殊窗体

目录 1.设计操作流程 2.实例 &#xff08;1&#xff09;Resources.Designer.cs &#xff08;2&#xff09;Frm_Main.Designer.cs &#xff08;3&#xff09;Frm_Main.cs &#xff08;4&#xff09;Frm_Start.Designer.cs &#xff08;5&#xff09;Frm_Start.cs &#…

机器学习-多重共线性是什么 ? 如何解决多重共线性问题 ?

多重共线性是指在回归模型中&#xff0c;自变量之间存在高度线性相关或近似线性相关的情况。这种相关性可能导致以下问题&#xff1a; 不稳定的估计&#xff1a;当自变量之间存在多重共线性时&#xff0c;回归模型中的系数估计会变得不稳定。小的变动或微小的误差可能导致估计…

redis试题按知识点归类

Redis 面试题可以按照不同的知识点进行分类&#xff0c;以下是一些典型的分类方式以及每个分类下的样例题目&#xff1a; 基础理论 什么是 Redis&#xff1f;Redis 的数据存储在哪里&#xff1f;Redis 支持哪些数据结构&#xff1f; 数据类型与操作 如何使用 Redis 的字符串…

系统之间的一致性问题 -- 支付成功显示未支付

系统之间的一致性问题 – 支付成功显示未支付&#xff1a; 接入第三方系统的支付接口&#xff0c;支付成功后&#xff0c;却显示未支付。 这种一般是系统之间的状态不一致导致的。 问题分析&#xff1a; 先查看第三方系统的支付状态。 如果第三方系统的支付状态也是未支付…

调用另一个程序的数据 IMPORT EXPORT MEMORY ID

*字段介绍&#xff1a; *1.SELNAME 屏幕字段名 *2.KIND 参数类型 P PARAMETER S SELECT-OPTION *3.其他的字段和SELECT-OPTION 一样 SUBMIT xxx VIA SELECTION-SCREEN "要不要显示选择屏幕 WITH SELECTION-TABLE xxx "选择屏幕的值 AND RETURN . 利用SUBMIT XXX …