赞
踩
在考虑如何集成redis之前,首先需要确保你拥有一个已经安装好的redis环境。
1.redis环境安装(Linux版本)
由于redis官方只支持Linux环境,所以如果你想安装官方版本,那么你就需要准备一台安装了Linux系统的服务器(虚拟机)。
redis安装包下载地址:
http://download.redis.io/releases/
下载好安装包后,就可以把安装包放到Linux服务器中,准备安装了。
我使用的是Xftp工具进行文件传输
传输上去之后,先对tar包进行解压,以上图的目录为例
# cd /usr/soft ---进入压缩包所在目录
# tar -zxvf redis-3.2.8.tar.gz --解压压缩包
解压完后,路径下就会出现相应文件夹。
# cd redis-3.2.8 --进入解压获得的文件夹
# make --编译
编译完成后,在src目录下会出现服务程序redis-server,还有用于测试的客户端程序redis-cli。
# cd src --进入src文件夹
# ./redis-server ../redis.conf --开启redis服务(开启后不要关闭黑窗)
现在就可以对redis服务进行访问了。
2.spring boot集成redis
首先需要引入redis依赖:
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-redis</artifactId>
- </dependency>
此时,spring会自动加载两个bean:
- @Bean
- @ConditionalOnMissingBean(name = "redisTemplate")
- public RedisTemplate<Object, Object> redisTemplate(
- RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
- RedisTemplate<Object, Object> template = new RedisTemplate<>();
- template.setConnectionFactory(redisConnectionFactory);
- return template;
- }
-
- @Bean
- @ConditionalOnMissingBean
- public StringRedisTemplate stringRedisTemplate(
- RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
- StringRedisTemplate template = new StringRedisTemplate();
- template.setConnectionFactory(redisConnectionFactory);
- return template;
- }
其中上面个bean能够操作所有对象,下面个用于操作key和value都是String的内容。
我们可以直接使用下面个bean进行测试。
测试之前先配置下redis全局配置:
在spring下添加如下配置
redis: #redis数据库索引 database: 0 #redis数据库主机ip host: 192.168.85.129 #redis服务端口号 port: 6379 #redis服务连接密码 password: jedis: pool: #最大连接数 max-active: 15 #最大等待时间(需要自己写单位) max-wait: 10000ms #最大空闲连接 max-idle: 8 #最小空闲连接 min-idle: 3
注:适用于spring boot2.0之后的版本。
接下来编写自定义操作接口:
- @Repository
- public class RedisRepository {
- @Autowired
- StringRedisTemplate stringRedisTemplate;
-
- /**
- * 用于单对象存储
- * @param key
- * @param child
- * @param time
- */
- public void add(String key,Child child,long time){
- Gson gson = new Gson();
- stringRedisTemplate.opsForValue().set(key,gson.toJson(child),time, TimeUnit.MINUTES);
- }
-
- /**
- * 用于多对象存储
- * @param key
- * @param list
- * @param time
- */
- public void add(String key, List<Child> list,long time){
- Gson gson = new Gson();
- stringRedisTemplate.opsForValue().set(key,gson.toJson(list),time, TimeUnit.MINUTES);
- }
-
- /**
- * 获取单个对象
- * @param key
- * @return
- */
- public Child getOne(String key){
- String result = stringRedisTemplate.opsForValue().get(key);
- if (isNotBlank(result)){
- return new Gson().fromJson(result,Child.class);
- }
- return null;
- }
-
- /**
- * 获取集合
- * @param key
- * @return
- */
- public List<Child> getList(String key){
- String result = stringRedisTemplate.opsForValue().get(key);
- if (isNotBlank(result)){
- return new Gson().fromJson(result,new TypeToken<List<Child>>(){
- }.getType());
- }
- return null;
- }
-
- /**
- * 删除单条记录
- * @param key
- */
- public void delete(String key){
- stringRedisTemplate.opsForValue().getOperations().delete(key);
- }
- }
如果系统中不能使用Gson对象,可以考虑加入Gson依赖:
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
接下来编写测试类进行测试:
- @RunWith(SpringRunner.class)
- @SpringBootTest
- public class RedisTest {
- @Autowired
- RedisRepository redisRepository;
- @Test
- public void test(){
- Child child = new Child();
- child.setName("redisTest");
- child.setMotherName("this is motherName");
- child.setFatherName("this is fatherName");
- child.setAddr("JiNan");
- child.setId("1");
- child.setSort(1);
- String key = "child First";
- long time = 100000l;
- redisRepository.add(key,child,time);
- Child child2 = redisRepository.getOne("child First");
- System.out.println(child2.getFatherName());
- redisRepository.delete("child First");
- List<Child> list = new ArrayList<Child>();
- for (int i = 0;i<10;i++){
- Child c = new Child();
- c.setSort(i);
- c.setFatherName("fatherName"+i);
- c.setName("name"+i);
- c.setMotherName("mother name"+i);
- list.add(c);
- }
- redisRepository.add("childList",list,10000);
- List<Child> sList = redisRepository.getList("childList");
- for (Child child1:sList){
- System.out.println(child1.getFatherName());
- }
- }
- @Before
- public void testBefore(){
- System.out.println("开始测试啦");
- }
- @After
- public void testAfter(){
- System.out.println("结束测试啦");
- }
- }
然后直接运行即可。
OVER。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。