Redis 介紹: Redis 服務(wù)
Redis (REmote Dictionary Server) 是一個(gè)由Salvatore Sanfilippo 完成的key-value存儲(chǔ)系統(tǒng),是跨平臺(tái)的非關(guān)系型數(shù)據(jù)庫(kù)。
Redis 是一個(gè)開(kāi)源的使用ANSI C語(yǔ)言編寫(xiě)、遵循BSD 協(xié)議的、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選擇持久性的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù),并提供多語(yǔ)言的API。
Redis 通常被認(rèn)為是數(shù)據(jù)結(jié)構(gòu)服務(wù)器,其值可以是字符串、哈希、列表、集合以及有序集合。
Redis 優(yōu)點(diǎn)
異???/strong>,每秒可以執(zhí)行大約110000次寫(xiě)(set)操作
每秒可執(zhí)行大約81000次讀(get)操作
支持豐富的數(shù)據(jù)結(jié)構(gòu)
操作具有原子性, 所有Redis 操作都是原子操作,這確保了兩個(gè)客戶(hù)端并發(fā)訪(fǎng)問(wèn),Redis 服務(wù)器能接收更新的值。
多使用工具,緩存,消息隊(duì)列(Redis 本地支持發(fā)布/訂閱),應(yīng)用程序中的任何短期數(shù)據(jù)。
Redis 安裝
下載地址:
https://github.com/MSOpenTech/redis/releases
Redis 支持32位和64 位,下載完成后,解壓后,文件夾下面包含許多子文件,打開(kāi)cmd 窗口,將其切換到redis 目錄下,輸入命名:
D:\sdk\Redis-x64-5.0.9 redis-server.exe redis.windows.conf
Redis是什么
Redis是現(xiàn)在最受歡迎的NoSQL數(shù)據(jù)庫(kù)之一,Redis是一個(gè)使用ANSI C編寫(xiě)的開(kāi)源、包含多種數(shù)據(jù)結(jié)構(gòu)、支持網(wǎng)絡(luò)、基于內(nèi)存、可選持久性的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù),其具備如下特性:
- 基于內(nèi)存運(yùn)行,性能高效
- 支持分布式,理論上可以無(wú)限擴(kuò)展
- key-value存儲(chǔ)系統(tǒng)
- 開(kāi)源的使用ANSI C語(yǔ)言編寫(xiě)、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API
相比于其他數(shù)據(jù)庫(kù)類(lèi)型,Redis具備的特點(diǎn)是:
- C/S通訊模型
- 單進(jìn)程單線(xiàn)程模型
- 豐富的數(shù)據(jù)類(lèi)型
- 操作具有原子性
- 持久化
- 高并發(fā)讀寫(xiě)
- 支持lua腳本
如果想使用redis 啟動(dòng)更加容易的話(huà),可以使用 將redis 安裝路徑加入到環(huán)境變量中,直接點(diǎn)擊 redis-server.exe 即可啟動(dòng)redis 服務(wù)。
SpringBoot 集成Redis 過(guò)程
1. 在pom.xml 中配置相關(guān)依賴(lài) jar
dependency>
groupId>org.springframework.boot/groupId>
artifactId>spring-boot-starter-data-redis/artifactId>
/dependency>
2.在SpringBoot 中配置核心文件
在application.properties 文件下添加配置redis 信息
# 配置redis
spring.redis.host:localhost
spring.redis.password=
spring.redis.port=6379
3. Redis 配置類(lèi)及其使用
Redis 配置類(lèi)
// RedisConfig redisconfig 配置
@Configuration
public class RedisConfig {
/**
* key redis serializer: {@link StringRedisSerializer} and
* key redis serializer: {@link Jackson2JsonRedisSerializer}
**/
@Bean
public RedisTemplateString, Object> redisTemplate(RedisConnectionFactory factory) {
// 創(chuàng)建對(duì)象
RedisTemplateString, Object> template = new RedisTemplate>();
Jackson2JsonRedisSerializer valueRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
//設(shè)置Redis的value為json格式,并存儲(chǔ)對(duì)象信息的序列化類(lèi)型
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
valueRedisSerializer.setObjectMapper(objectMapper);
// 創(chuàng)建一個(gè)keyRedisSerializer
RedisSerializer keyRedisSerializer = new StringRedisSerializer();
// 設(shè)置信息
template.setKeySerializer(keyRedisSerializer);
template.setValueSerializer(valueRedisSerializer);
template.setHashKeySerializer(keyRedisSerializer);
template.setHashValueSerializer(valueRedisSerializer);
template.setConnectionFactory(factory);
template.afterPropertiesSet();
return template;
}
// redisUtils() 方法
@Bean
public RedisUtils redisUtils(@Autowired RedisTemplate redisTemplate) {
return new RedisUtils(redisTemplate);
}
}
Redis 工具類(lèi), 首先redis 的增刪改查等操作,針對(duì)多種數(shù)據(jù)類(lèi)型的數(shù)據(jù)
/**
* redis工具類(lèi)
*
* @author Jone
*/
// RedisUtils
@Slf4j
public class RedisUtils {
// 初始化變量
private static Logger logger = LoggerFactory.getLogger(RedisUtils.class);
private static RedisTemplate redisTemplate;
public RedisUtils(RedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}
// =============================common============================
/**
* 判斷key是否存在
*
* @param key 鍵
* @return true 存在 false不存在
*/
public Boolean hasKey(String key) {
try {
return redisTemplate.hasKey(key);
} catch (Exception e) {
logger.error("判斷key是否存在異常: {}", e);
return false;
}
}
/**
* 普通緩存獲取
*
* @param key 鍵
* @return 值
*/
public Object get(String key) {
return key == null ? null : redisTemplate.opsForValue().get(key);
}
/**
* 刪除
* @param key
* @return
*/
public boolean del(String ... key){
if(key!=nullkey.length>0){
redisTemplate.delete(key[0]);
return true;
}else{
redisTemplate.delete(CollectionUtils.arrayToList(key));
return true;
}
}
return false;
}
// SET JIHE
public Set getKeys(){
return redisTemplate.keys("*");
}
/**
* 普通緩存放入
*
* @param key 鍵
* @param value 值
* @return true成功 false失敗
*/
public Boolean set(String key, Object value) {
try {
redisTemplate.opsForValue().set(key, value);
return true;
} catch (Exception e) {
logger.error("set異常: {}", e);
return false;
}
}
}
配置完備之后,自動(dòng)配置RedisTemplate ,需要操作redis 的類(lèi)中注入redisTeplate,如下所示:
// 使用RedisTemplate
@Autowired
private RedisTemplateString, String> redisTemplate;
@Autowired
private RedisTemplateObject, Object> redisTemplate;
以上就是SpringBoot 集成Redis 過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于Springboot Redis實(shí)戰(zhàn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- springboot利用redis、Redisson處理并發(fā)問(wèn)題的操作
- springboot2.5.0和redis整合配置詳解
- Springboot基礎(chǔ)之RedisUtils工具類(lèi)
- SpringSecurity整合springBoot、redis實(shí)現(xiàn)登錄互踢功能
- Springboot Redis設(shè)置key前綴的方法步驟
- 詳解springboot中各個(gè)版本的redis配置問(wèn)題
- springboot+redis 實(shí)現(xiàn)分布式限流令牌桶的示例代碼
- redis 集群批量操作實(shí)現(xiàn)
- SpringBoot+redis配置及測(cè)試的方法
- SpringBoot集成Redis數(shù)據(jù)庫(kù),實(shí)現(xiàn)緩存管理