博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot redis 接入笔记
阅读量:4081 次
发布时间:2019-05-25

本文共 5216 字,大约阅读时间需要 17 分钟。

1. 安装redis

redis官网地址:

     最新版本:2.8.3

     在Linux下安装Redis非常简单,具体步骤如下(官网有说明):

     1、下载源码,解压缩后编译源码。

$ wget http://download.redis.io/releases/redis-2.8.3.tar.gz$ tar xzf redis-2.8.3.tar.gz$ cd redis-2.8.3$ make

     2、编译完成后,在Src目录下,有四个可执行文件redis-server、redis-benchmark、redis-cli和redis.conf(在上一目录)。然后拷贝到一个目录下。

mkdir /usr/rediscp redis-server  /usr/rediscp redis-benchmark /usr/rediscp redis-cli  /usr/rediscp redis.conf  /usr/rediscd /usr/redis

     3、启动Redis服务。

$ redis-server   redis.conf

     4、然后用客户端测试一下是否启动成功。

$ redis-cliredis> set foo barOKredis> get foo"bar"

 http://www.cnblogs.com/silent2012/p/3499654.html

http://www.cnblogs.com/codersay/p/4301677.html

使用   ./redis-server redis.conf & 来后台启动redis服务

redis-cli -p 端口号 shutdown   关闭redis服务

从外部链接调试:

telnet xxx.xxx.xxx.xxx 6379

2. spring boot 接入 redis 客户端

http://wiselyman.iteye.com/blog/2184884

(1)maven依赖:

org.springframework.boot
spring-boot-starter-redis
1.3.1.RELEASE
(2)属性:

# Redis数据库索引(默认为0)spring.redis.database=0# Redis服务器地址spring.redis.host=xxx.xxx.xxx.xxx# Redis服务器连接端口spring.redis.port=xxxx# Redis服务器连接密码(默认为空)spring.redis.password=# 连接池最大连接数(使用负值表示没有限制)spring.redis.pool.max-active=8# 连接池最大阻塞等待时间(使用负值表示没有限制)spring.redis.pool.max-wait=-1# 连接池中的最大空闲连接spring.redis.pool.max-idle=8# 连接池中的最小空闲连接spring.redis.pool.min-idle=0# 连接超时时间(毫秒)spring.redis.timeout=0
database 生产环境可设置为其他数字,区分测试环境

(3)代码注入:

@Configuration@EnableCaching@EnableRedisHttpSessionpublic class RedisConfig extends CachingConfigurerSupport {    @Bean    public KeyGenerator wiselyKeyGenerator(){        return new KeyGenerator() {            @Override            public Object generate(Object target, Method method, Object... params) {                StringBuilder sb = new StringBuilder();                sb.append(target.getClass().getName());                sb.append(method.getName());                for (Object obj : params) {                    sb.append(obj.toString());                }                return sb.toString();            }        };    }    @Bean    public static ConfigureRedisAction configureRedisAction() {        return ConfigureRedisAction.NO_OP;    }    @Bean    public CacheManager cacheManager(            @SuppressWarnings("rawtypes") RedisTemplate
redisTemplate) { return new RedisCacheManager(redisTemplate); } @Bean public RedisTemplate
stringRedisTemplate( RedisConnectionFactory factory) { RedisTemplate
template = new RedisTemplate
(); template.setConnectionFactory(factory); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); template.setValueSerializer(stringRedisSerializer); template.setKeySerializer(stringRedisSerializer); template.setHashKeySerializer(stringRedisSerializer); template.setHashValueSerializer(stringRedisSerializer); template.afterPropertiesSet(); return template; } @Bean public RedisTemplate
jdkRedisTemplate( RedisConnectionFactory factory) { RedisTemplate
template = new RedisTemplate
(); template.setConnectionFactory(factory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer(); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); template.setValueSerializer(jdkSerializationRedisSerializer); template.setKeySerializer(stringRedisSerializer); template.setHashKeySerializer(stringRedisSerializer); template.setHashValueSerializer(jdkSerializationRedisSerializer); template.afterPropertiesSet(); return template; }}

这里同时注入了stringRedisTemplate 和 jdkRedisTemplate,未在@Bean处指定名称(@Bean(name="xxx")),直接取工厂方法名

业务装配时:

@Resource(name = "jdkRedisTemplate")       private RedisTemplate
jdkRedisTemplate; @Resource(name = "stringRedisTemplate") // if stringRedisTemplate, result in SmsCheck cannot be cast to java.lang.String private RedisTemplate
stringRedisTemplate;

3. 简单使用调试

SmsCheck smsCheck = new SmsCheck();        smsCheck.setMobile("xxx");        // 设置缓存        jdkRedisTemplate.opsForValue().set("test",smsCheck);        Object o = jdkRedisTemplate.opsForValue().get("test");        // if stringRedisTemplate result in SmsCheck cannot to String Exception        stringRedisTemplate.opsForValue().set("testInt", new Integer(2));//报错

测试通过,更详细的使用在未来更新,如果此处装配的是stringRedisTemplate,则由于该bean以

template.setValueSerializer(stringRedisSerializer);
作为value的序列化方案,所以会导致SmsCheck无法序列化为String,抛出一个

SmsCheck cannot be cast to java.lang.String
异常

最后一行也报错,

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

spring在序列化时抛出异常,Integer无法直接使用stringRedisTemplate序列化

4.相关推荐

http://www.jianshu.com/p/7bf5dc61ca06  

如何使用RedisTemplate访问Redis数据结构

http://412887952-qq-com.iteye.com/blog/2294942

你可能感兴趣的文章
github简单使用教程
查看>>
如何高效利用GitHub
查看>>
环境分支-git版本管理
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
支付宝生活号服务号 用户信息获取 oauth2 登录对接 springboot java
查看>>
CodeForces #196(Div. 2) 337D Book of Evil (树形dp)
查看>>
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
大数据学习:Spark RDD操作入门
查看>>