spring boot整合redis

Redis 简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

 

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的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

了解redis后现在开始整合Spring boot和redis了。

第一步:加入依赖

<!--redis-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-redis</artifactId>
    <version>${boot.version}</version>
</dependency>

第二步:SpringBoot配置文件(application.properties)中配置Redis连接

########################################################
###Redis (RedisConfiguration)
########################################################
spring.redis.database=1
spring.redis.host=127.0.0.1
spring.redis.port=6379
#spring.redis.password=
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.timeout=5000

第三步:创建User实体类

package com.hik.bean;

import java.io.Serializable;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

@Data
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
public class User implements Serializable {

	private static final long serialVersionUId = 1L;

	private String id;
	private String name;
}

第四步:创建RedisController

package com.hik.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.hik.bean.User;
import com.hik.service.RedisService;

/**
 * Created by on 2017/3/1.
 */
@RestController
@RequestMapping("/redis")
public class RedisController {

	@Autowired
	RedisService redisService;

	/**
	 * 设置Str缓存
	 * 
	 * @param key
	 * @param val
	 * @return
	 */
	@RequestMapping("setStr")
	public String setStr(String key, String val) {
		try {
			redisService.setStr(key, val);
			return "success";
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}
	}

	/**
	 * 根据key查询Str缓存
	 * 
	 * @param key
	 * @return
	 */
	@RequestMapping(value = "getStr")
	public String getStr(String key) {
		return redisService.getStr(key);
	}

	/**
	 * 根据key产出Str缓存
	 * 
	 * @param key
	 * @return
	 */
	@RequestMapping(value = "delStr")
	public String delStr(String key) {
		try {
			redisService.del(key);
			return "success";
		} catch (Exception e) {
			return "error";
		}
	}

	/**
	 * 设置obj缓存
	 * 
	 * @param key
	 * @param user
	 * @return
	 */
	@RequestMapping(value = "setObj")
	public String setObj(String key, User user) {
		try {
			redisService.setObj(key, user);
			return "success";
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}
	}

	/**
	 * 获取obj缓存
	 * 
	 * @param key
	 * @return
	 */
	@RequestMapping(value = "getObj")
	public Object getObj(String key) {
		return redisService.getObj(key);
	}

	/**
	 * 删除obj缓存
	 * 
	 * @param key
	 * @return
	 */
	@RequestMapping(value = "delObj")
	public Object delObj(String key) {
		try {
			redisService.delObj(key);
			return "success";
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}
	}

}

第五步:创建RedisController

package com.hik.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * Created by on 2017/3/1.
 */
@Service
public class RedisService {

	@Autowired
	StringRedisTemplate stringRedisTemplate;

	@Resource(name = "stringRedisTemplate")
	ValueOperations<String, String> valOpsStr;

	@Autowired
	RedisTemplate<Object, Object> redisTemplate;

	@Resource(name = "redisTemplate")
	ValueOperations<Object, Object> valOpsObj;

	/**
	 * 根据指定key获取String
	 * 
	 * @param key
	 * @return
	 */
	public String getStr(String key) {
		return valOpsStr.get(key);
	}

	/**
	 * 设置Str缓存
	 * 
	 * @param key
	 * @param val
	 */
	public void setStr(String key, String val) {
		valOpsStr.set(key, val);
	}

	/**
	 * 删除指定key
	 * 
	 * @param key
	 */
	public void del(String key) {
		stringRedisTemplate.delete(key);
	}

	/**
	 * 根据指定o获取Object
	 * 
	 * @param o
	 * @return
	 */
	public Object getObj(Object o) {
		return valOpsObj.get(o);
	}

	/**
	 * 设置obj缓存
	 * 
	 * @param o1
	 * @param o2
	 */
	public void setObj(Object o1, Object o2) {
		valOpsObj.set(o1, o2);
	}

	/**
	 * 删除Obj缓存
	 * 
	 * @param o
	 */
	public void delObj(Object o) {
		redisTemplate.delete(o);
	}

}

运行测试:

1.StringRedisTemplate

http://127.0.0.1:8090/redis/setStr?key=aa&val=name

http://127.0.0.1:8090/redis/getStr?key=aa

http://127.0.0.1:8090/redis/delStr?key=aa

2.RedisTemplate

http://127.0.0.1:8090/redis/setObj?key=aa&id=1&name=test

http://127.0.0.1:8090/redis/getObj?key=aa

http://127.0.0.1:8090/redis/delObj?key=aa

以上地址都能通过测试,在这里就不一一截图了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值