昨天完成memcached的缓存压力测试,今天学习Redis缓存
以前没有怎么多的了解这个Redis开始准备安装
现在Windows缓存安装Windows
https://github.com/MicrosoftArchive/redis/releases(下载链接)
下载解压放在你的电脑里面
运行起来的效果
还有用cmd --->进入安装的目录运行
redis-server.exe redis.windows.conf (也是同样的效果)
接下来在linux(服务器)环境下面安装
https://redis.io/download(安装步骤)
下载Redis
$ wget http://download.redis.io/releases/redis-4.0.8.tar.gz
解压
$ tar xzf redis-4.0.8.tar.gz
$ mv redis-4.0.8 /usr $ cd redis-4.0.8
安装 $ make
启动Redis
$ src/redis-server
关闭 Ctrl + C
Redis在Windows平台和linux平台安装成功
接下来准备在前面的项目里面配置Redis缓存机制(替换开始memcached)
http://blog.csdn.net/tomcat_2014/article/details/55260306(参考文档)
http://blog.csdn.net/l1028386804/article/details/52141372(参考文档)
maven 添加相关的jar包
<!--redis-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.1</version>
</dependency>
添加redis.properties
#访问地址
redis.host=47.94.***.**
#访问端口
redis.port=6379
#注意,如果没有password,此处不设置值,但这一项要保留
redis.password=
#最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
redis.maxIdle=300
#连接池的最大数据库连接数。设为0表示无限制
redis.maxActive=600
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
redis.maxWait=1000
#在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;
redis.testOnBorrow=true
添加redis的配置
<!-- redis config start -->
<!-- 配置JedisPoolConfig实例 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="${redis.maxIdle}" />
<property name="maxTotal" value="${redis.maxActive}" />
<property name="maxWaitMillis" value="${redis.maxWait}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}" />
</bean>
<!-- 配置JedisConnectionFactory -->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="${redis.host}"/>
<property name="port" value="${redis.port}"/>
<property name="password" value="${redis.pass}"/>
<property name="database" value="${redis.dbIndex}"/>
<property name="poolConfig" ref="poolConfig"/>
</bean>
<!-- 配置RedisTemplate -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
</bean>
<!-- 配置RedisCacheManager -->
<bean id="redisCacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">
<constructor-arg name="redisOperations" ref="redisTemplate" />
<property name="defaultExpiration" value="${redis.expiration}"/>
</bean>
<!-- 配置RedisCacheConfig -->
<bean id="redisCacheConfig" class="com.fuwei.util.RedisCacheConfig">
<constructor-arg ref="jedisConnectionFactory" />
<constructor-arg ref="redisTemplate" />
<constructor-arg ref="redisCacheManager" />
</bean>
还有以Spring与配置文件来管理的redis缓存配置类
package com.fuwei.util;
import java.lang.reflect.Method;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
/**
* 以Spring与配置文件来管理的redis缓存配置类
* @author liuyazhuang
*
*/
@Configuration
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport {
private volatile JedisConnectionFactory mJedisConnectionFactory;
private volatile RedisTemplate<String, String> mRedisTemplate;
private volatile RedisCacheManager mRedisCacheManager;
public RedisCacheConfig() {
super();
}
public RedisCacheConfig(JedisConnectionFactory mJedisConnectionFactory, RedisTemplate<String,String> mRedisTemplate,
RedisCacheManager mRedisCacheManager) {
super();
this.mJedisConnectionFactory = mJedisConnectionFactory;
this.mRedisTemplate = mRedisTemplate;
this.mRedisCacheManager = mRedisCacheManager;
}
public JedisConnectionFactory redisConnectionFactory() {
return mJedisConnectionFactory;
}
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
return mRedisTemplate;
}
public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) {
return mRedisCacheManager;
}
@Bean
public KeyGenerator customKeyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object o, Method method, Object... objects) {
StringBuilder sb = new StringBuilder();
sb.append(o.getClass().getName());
sb.append(method.getName());
for (Object obj : objects) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
}
redis的安装和配置完成了
目前就是弄到这里,卡起了,项目的redis还没有跑通,感觉还是有点问题
(可能是对redis的不熟悉)
今天完成的事情:就是在Windows环境和linux的环境安装和配置redis缓存的机制,还有编写java的spring集成redis,看了很多的博客,流程是这个样子的,困难是对这个不熟悉,才接触,好多没有注意的小细节,自己也不好找问题,demo还没有跑通
今天遇到的困难:就是demo还没有跑通安装和配置都简单,就是不熟悉redis的spring配置,简单的java原生的配置简单,慢慢多查资料,把这个问题解决啦
明天的计划:完成redis的项目的跑起来
坚持