Redis 介紹: Redis 服務(wù)
Redis (REmote Dictionary Server) 是一個由Salvatore Sanfilippo 完成的key-value存儲系統(tǒng),是跨平臺的非關(guān)系型數(shù)據(jù)庫。
Redis 是一個開源的使用ANSI C語言編寫、遵循BSD 協(xié)議的、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選擇持久性的鍵值對存儲數(shù)據(jù)庫,并提供多語言的API。
Redis 通常被認為是數(shù)據(jù)結(jié)構(gòu)服務(wù)器,其值可以是字符串、哈希、列表、集合以及有序集合。
Redis 優(yōu)點
異常快,每秒可以執(zhí)行大約110000次寫(set)操作
每秒可執(zhí)行大約81000次讀(get)操作
支持豐富的數(shù)據(jù)結(jié)構(gòu)
操作具有原子性, 所有Redis 操作都是原子操作,這確保了兩個客戶端并發(fā)訪問,Redis 服務(wù)器能接收更新的值。
多使用工具,緩存,消息隊列(Redis 本地支持發(fā)布/訂閱),應(yīng)用程序中的任何短期數(shù)據(jù)。
Redis 安裝
下載地址:
https://github.com/MSOpenTech/redis/releases
Redis 支持32位和64 位,下載完成后,解壓后,文件夾下面包含許多子文件,打開cmd 窗口,將其切換到redis 目錄下,輸入命名:
D:\sdk\Redis-x64-5.0.9 redis-server.exe redis.windows.conf
Redis是什么
Redis是現(xiàn)在最受歡迎的NoSQL數(shù)據(jù)庫之一,Redis是一個使用ANSI C編寫的開源、包含多種數(shù)據(jù)結(jié)構(gòu)、支持網(wǎng)絡(luò)、基于內(nèi)存、可選持久性的鍵值對存儲數(shù)據(jù)庫,其具備如下特性:
- 基于內(nèi)存運行,性能高效
- 支持分布式,理論上可以無限擴展
- key-value存儲系統(tǒng)
- 開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API
相比于其他數(shù)據(jù)庫類型,Redis具備的特點是:
- C/S通訊模型
- 單進程單線程模型
- 豐富的數(shù)據(jù)類型
- 操作具有原子性
- 持久化
- 高并發(fā)讀寫
- 支持lua腳本
如果想使用redis 啟動更加容易的話,可以使用 將redis 安裝路徑加入到環(huán)境變量中,直接點擊 redis-server.exe 即可啟動redis 服務(wù)。
SpringBoot 集成Redis 過程
1. 在pom.xml 中配置相關(guān)依賴 jar
1
2
3
4
|
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> |
2.在SpringBoot 中配置核心文件
在application.properties 文件下添加配置redis 信息
1
2
3
4
|
# 配置redis spring.redis.host:localhost spring.redis.password= spring.redis.port= 6379 |
3. Redis 配置類及其使用
Redis 配置類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
// RedisConfig redisconfig 配置 @Configuration public class RedisConfig { /** * key redis serializer: {@link StringRedisSerializer} and * key redis serializer: {@link Jackson2JsonRedisSerializer} **/ @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { // 創(chuàng)建對象 RedisTemplate<String, Object> template = new RedisTemplate<>(); Jackson2JsonRedisSerializer valueRedisSerializer = new Jackson2JsonRedisSerializer(Object. class ); //設(shè)置Redis的value為json格式,并存儲對象信息的序列化類型 ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); valueRedisSerializer.setObjectMapper(objectMapper); ? // 創(chuàng)建一個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 工具類, 首先redis 的增刪改查等操作,針對多種數(shù)據(jù)類型的數(shù)據(jù)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
/** * redis工具類 * * @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!= null &&key.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 ; } } } |
配置完備之后,自動配置RedisTemplate ,需要操作redis 的類中注入redisTeplate,如下所示:
1
2
3
4
5
6
|
// 使用RedisTemplate @Autowired private RedisTemplate<String, String> redisTemplate; ? @Autowired private RedisTemplate<Object, Object> redisTemplate; |
以上就是SpringBoot 集成Redis 過程的詳細內(nèi)容,更多關(guān)于Springboot Redis實戰(zhàn)的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://blog.csdn.net/it_lxg123/article/details/117425653