缓存神器——redis初探

Redis在企业开发中通常充当高速缓存的作用,用于保护接口或者数据库。在高并发的场景、分布式场景下也可以充当分布式锁,避免多个JVM进程在同一时间对同一资源进行修改,从而引发非线程安全的问题。

一.Redis安装

下载链接
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到指定位置,解压后,将文件夹重新命名为 redis。
在这里插入图片描述
使用时启动服务端和客户端
在这里插入图片描述

二.Spring中如何使用Redis

  在 Java 中与 Redis 连接的驱动存在很多种 ,目前比较广泛使用的是 Jedis , 其他的还有 Lettuce 、Jredis和Srp。这里只讨论只讨论 Spring 推荐使用的类库 Jedis 的使用 。
  Spring 提供了 一个 RedisConnectionFactory 接口, 通过它可以 生成一个 RedisConnection 接口 对象 ,而 RedisConnection 接口对象是对 Redis 底层接口的封装 。 例如 , 本章使用的 Jedis 驱动,那么 Spring就会提供 RedisConnection 接口的实现类 JedisConnection 去封装原有的 Jedis ( redis.clients.jedis.Jedis )对象 。

1.配置RedisConnectionFactory工厂类

配置这个工厂主要是配置 Redis 的连接池,对于连接池可以限定其最大连接数、超时时间等属性。

//代码清单1:
package com.springboot.chapter7.config;

/**** imports ****/
@Configuration
public class RedisConfig {

	private RedisConnectionFactory connectionFactory = null;

	@Bean(name = "redisConnectionFactory")
	public RedisConnectionFactory initConnectionFactory() {
		if (this.connectionFactory != null) {
			return this.connectionFactory;
		}
		JedisPoolConfig poolConfig = new JedisPoolConfig();
		// 最大空闲数
		poolConfig.setMaxIdle(50);
		// 最大连接数
		poolConfig.setMaxTotal(100);
		// 最大等待毫秒数
		poolConfig.setMaxWaitMillis(2000);
		// 创建Jedis连接工厂
		JedisConnectionFactory connectionFactory = new JedisConnectionFactory(poolConfig);
		// 配置Redis连接服务器
		RedisStandaloneConfiguration rsc = connectionFactory.getStandaloneConfiguration();
		//本机的IP地址,可以通过cmd窗口ipconfiig查看
		rsc.setHostName("10.160.64.151");
		rsc.setPort(6379);
		//redis安装后默认是没有密码的
		//rsc.setPassword(RedisPassword.of("cwc8469619"));
		this.connectionFactory = connectionFactory;
		return connectionFactory;
	}
}
2.RedisTemplate

  RedisTemplate是 Spring 操作 Redis 的重点内容。 RedisTemplate是一个强大的类,首先它会自动从 RedisConnectionFactory 工厂中获取连接,然后执行对应的 Redis命令,在最后还会关闭 Redis 的连接。在代码清单 1的基础上加入代码清单 2。
  此外Spring 提供了 RedisSeri alizer 接口,它有两个方法。这两个
方法,一个是 serialize , 它能把那些可以序列化的对象转换为二进制字符串;另一个是 deserialize,它能够通过反序列化把二进制字符串转换为 Java 对象 。

//代码清单2:

@Bean(name="redisTemplate")
	public RedisTemplate<Object, Object> initRedisTemplate() {
	    RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
	    //RedisTemplate会自动初始化StringRedisSerializer,所以这里直接获取
	    RedisSerializer<String> stringRedisSerializer = redisTemplate.getStringSerializer();
	    //设置字符串序列化器,这样Spring就会把Redis的key当作字符串处理
	    redisTemplate.setKeySerializer(stringRedisSerializer);
	    redisTemplate.setHashKeySerializer(stringRedisSerializer);
	    redisTemplate.setHashValueSerializer(stringRedisSerializer);
		redisTemplate.setConnectionFactory(initConnectionFactory());
	  return redisTemplate;
	}
3.创建启动类测试RedisTemplate
//代码清单3:
package com.springboot.chapter7.main;

/**** imports ****/
public class Chapter7Main {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(RedisConfig.class);
		RedisTemplate redisTemplate = ctx.getBean(RedisTemplate.class);
		redisTemplate.opsForValue().set("key1", "value1");
		redisTemplate.opsForHash().put("hash", "field", "hvalue");
		/*useSessionCallback(redisTemplate);
//		useRedisCallback(redisTemplate);
		ctx.close();*/
	}

}	

运行启动类,启动redis服务端和客户端,在客户端如下图测试,成功查询到redis数据:
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值