JAVA缓存机制和Redis配置使用

本文介绍了如何在JAVA中配置和使用Redis,包括运行Redis的Docker命令、Maven中Redis的三大框架Jedis、Redisson和Lettuce的对比,以及在Properties文件和JAVA代码中的设置。详细讲解了Redis的5种数据类型:String、Hash、List、Set和Sorted Set的增删改查操作,以及在实际场景中的应用。
摘要由CSDN通过智能技术生成
缓存机制 作用 使用频率 难易度
OScache JVM内置缓存, 用于缓存静态页面 简单
Ehcache JVM内置缓存, 用于缓存数据库取到的数据 简单
自设HashMap 自己coding,将HashMap用来将需要的数据存在JVM中供使用, 不过要有一个清理Map中无效缓存的机制,避免缓存内容越来越多造成OOM 复杂
Redis 独立的缓存软件, 通过KV, 可以存取任意数据, 自带无效数据清理机制和连接池设置

Redis配置使用

0. 运行Redis

直接用docker命令: docker run -p 6379:6379 -d redis:latest redis-server
进入redis docker: docker exec -it redis redis-cli

1. Maven插件

Redis三大框架:

概念:

Jedis:是Redis的Java实现客户端,提供了比较全面的Redis命令的支持,

Redisson:实现了分布式和可扩展的Java数据结构。

Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。

优点:

Jedis:比较全面的提供了Redis的操作特性

Redisson:促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列

Lettuce:主要在一些分布式缓存框架上使用比较多

可伸缩:

Jedis:使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。(类似于mysql用connection直连)

Redisson:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作

Lettuce:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作
(类似于mysql用mybatis连接)

Springboot从2.0.0开始, spring-boot-starter-data-redis默认使用lettuce框架.
(包中也包括jedis,但是没有使用)

 		<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>		

commons-pool2是为设置Redis连接池

2. Properties文件设置

#redis连接配置(必须)
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=xxxxx(可以没有密码)

#(可选)
#最大空闲数
spring.redis.lettuce.pool.max-idle=80

##最小空闲数
spring.redis.lettuce.pool.min-idle=10

##最大连接数:能够同时建立的“最大链接个数”
spring.redis.lettuce.pool.max-active=500

##最大建立连接等待时间:单位ms
spring.redis.lettuce.pool.max-wait=1ms

##当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能,单位毫秒
spring.redis.lettuce.shutdown-timeout=100ms

3. JAVA代码实现

3.1 Redis支持5种数据类型的增删改查

增加和修改是一种方法, 如果数据不存在就会增加, 存在就会修改

3.1.1 String(字符串) (包括对象)

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

常用命令:set、get、decr、incr、mget等。

注意:一个键最大能存储512MB。

3.1.1.1 字符串存取
package com.example.demo.controller;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值