本文将介绍如何在SSH中简单地使用Redis。本人系统是使用Mac OSX,其他系统的也类似。
一. Redis
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是字符串(String),哈希(Map), 列表(list), 集合(sets)和有序集合(sorted sets)等类型。
Redis 与其他 key - value 缓存产品有以下三个特点:
①Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
②Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
③Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势:
①性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
②丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
③原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
④丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
二. Redis的安装与启动
首先到官网:http://redis.io/ 下载对应版本的安装包,然后输入命令:
//解压:
$ tar -zxvf redis-3.2.8.tar.gz
//进入目录
$cd redis-3.2.8
$make
$sudo make install
默认安装在/usr/local/bin下,可以检查下是否安装成功:
$ ls /usr/local/bin |grep redis
启动Redis
进入/usr/local/bin
$ ./redis-server
检查Redis是否正在工作:
$ redis-cli
可以看到Redis已经成功安装了。
三. 在Spring中使用Redis
Java中操作Redis使用的是Jedis,首先在pom.xml中加入相关依赖:
<!-- redis cache related.....start -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.0.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
<!-- redis cache related.....end -->
然后实现配置类:
package com.ehelp.util;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
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;
@Configuration
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport {
@Bean
public JedisConnectionFactory redisConnectionactory() {
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();
redisConnectionFactory.setHostName("localhost");
redisConnectionFactory.setPort(6379);
return redisConnectionFactory;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(cf);
return redisTemplate;
}
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManger = new RedisCacheManager(redisTemplate);
cacheManger.setDefaultExpiration(5); //cache过期时间
return cacheManger;
}
}
最后直接在需要添加缓存的方法上使用注解就可实现缓存: