Redis——(二)
java操作redis
环境准备
1、创建SpringBoot项目
2、引入依赖
<dependency> <groupId>redis.clientsgroupId> <artifactId>jedisartifactId> <version>3.1.0version> dependency>
3、创建jedis对象
//1.创建Jedis对象
Jedis jedis = new Jedis("39.99.218.169",7000);
//2.执行相关操作
//3.释放资源
jedis.close();
七、SpringBoot整合Redis
SpringBoot DataRedis中提供了RedisTemplate和StringRedisTemplate,其中StringRedisTemplate是RedisTemplate的子类,两个方法基本一致,不同之处主要体现在操作的数据类型不同,RedisTemplate中的两个泛型都是Object,意味着存储的key和value都可以是一个对象,而StringRedisTemplate的两个泛型都是String,意味着StringRedisTemplate的key和value都只能是字符串。
注意:使用RedisTemplate默认是将对象序列化到Redis中,所以放入的对象必须实现对象序列化接口
7.1、环境准备
1. 引入依赖
org.springframework.bootspring-boot-starter-data-redis2.3.1.RELEASE
2. 配置application.properties
spring.redis.host=39.99.218.169
spring.redis.port=7000
spring.redis.database=0
7.2、使用StringRedisTemplate和RedisTemplate
八、Redis应用场景
1.利用 redis 中字符串类型完成项目中手机验证码存储的实现
2.利用 redis 中字符串类型完成具有失效性业务功能
3.利用 redis 分布式集群系统中 Session共享 memcache 内存数据存储上限数据类型比较简单 redis 内存
4.利用 redis zset类型的可排序实现排行榜
5.利用 redis 分布式缓存
6.利用 redis 存储认证之后token信息超时失效
7.利用 redis 解决分布式集群系统中分布式锁问题 jvm synchronize
九、Redis 中分布式缓存实现
1.什么是缓存
计算机内存中一段数据
2.内存中数据特点
1.读写快
2.断点立即丢失
3.缓存解决了什么问题
1.提高了网站吞吐量,提高网站运行效率
2.核心解决问题:缓存的存在是用来减轻数据库的访问压力
4.使用缓存时一定是数据库极少发生修改,更多用于查询这种情况,所以不是所有数据都加入缓存更好,比如城市坐标等固定数据就可以加缓存。
5.本地缓存和分布式缓存区别
1.本地缓存:存在应用服务器内存中数据称之为本地缓存(Local cache)
2.分布式缓存:存储在当前应用服务器内存之外数据称之为分布式缓存(distributecache)
3.集群:将同一种服务的多个节点放在一起共同对系统提供服务过程称之为集群
4.分布式:有多个不同服务集群功能对系统提供服务这个系统称之为分布式系统(distributesystem)
6.利用mybatis自身本地缓存结合redis 实现分布式缓存
1.中应用级缓存(二级缓存) 也就是SqlSessionFactory级别缓存所有会话共享
2.二级缓存要手动开启
1.本地缓存
3.自定义Rediscache实现
1.自定义Cache类implements Cache接口,并对Cache接口的方法进行实现
2.使用RedisCache实现
本地缓存代码
导入依赖
<dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> dependency> <dependency> <groupId>com.alibabagroupId> <artifactId>druidartifactId> <version>1.1.22version> dependency> <dependency> <groupId>org.mybatis.spring.bootgroupId> <artifactId>mybatis-spring-boot-starterartifactId> <version>2.1.3version> dependency>
写入配置
server.port=8989
#redis
spring.redis.host=39.99.218.169
spring.redis.port=7000
spring.redis.database=0
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/2001?characterEndoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
mybatis.mapper-locations=classpath:com/baro/mapper/*.xml
mybatis.type-aliases-package=com.baro.entity
logging.level.com.baro.dao=debug
入口类
@SpringBootApplication @MapperScan("com.baro.dao") public class RedisBootApplication { public static void main(String[] args) { SpringApplication.run(RedisBootApplication.class, args); } }
实体类
@Data @Accessors(chain = true)//lombok public class User implements Serializable { private String id; private String name; private Integer age; private Date bir; }
查询配置
resources/com/baro/mapper/UerDAOMapper.xml /span> PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.baro.dao.BookDAO"> <cache/> <selectid="findAll" resultType="Book"> select id,name,permissionfrom book select> mapper>
测试类
@SpringBootTest(classes = RedisBootApplication.class)public class testUserService { @Autowired private BookService bookService; @Test public void test() { bookService.findAll().forEach(user ->System.out.println("u:" + user)); }}
分布式缓存代码
导入依赖
<dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> dependency> <dependency> <groupId>com.alibabagroupId> <artifactId>druidartifactId> <version>1.1.22version> dependency> <dependency> <groupId>org.mybatis.spring.bootgroupId> <artifactId>mybatis-spring-boot-starterartifactId> <version>2.1.3version> dependency>
写入配置
server.port=8989 #redisspring.redis.host=39.99.218.169spring.redis.port=7000spring.redis.database=0 spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/2001?characterEndoding=UTF-8spring.datasource.username=rootspring.datasource.password=123456 mybatis.mapper-locations=classpath:com/baro/mapper/*.xmlmybatis.type-aliases-package=com.baro.entity logging.level.com.baro.dao=debug
入口类
@SpringBootApplication@MapperScan("com.baro.dao")public class RedisBootApplication { public static voidmain(String[] args) { SpringApplication.run(RedisBootApplication.class,args); } }
实体类
@Data@Accessors(chain = true)//lombokpublic class User implements Serializable { private String id; private String name; private Integer age; private Date bir;}
查询配置
resources/com/baro/mapper/UerDAOMapper.xml /span> PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.baro.dao.BookDAO"> <cache/> <selectid="findAll" resultType="Book"> select id,name,permissionfrom book select> mapper>