1. 程式人生 > >SpringBoot 使用 redis以及windo 環境下redis安裝

SpringBoot 使用 redis以及windo 環境下redis安裝

redis 簡介

Redis 是一個可以持久儲存的快取系統。 是一個高效能的key-value 資料庫,使用鍵值對來儲存資料

redis 提供給了 多種資料型別用來儲存資料:
Key 可以是任意型別,但是最終會儲存為 byte[]

String 簡單的(key value)儲存介面,支援資料的自增,支援BitSet 結構

Hash 雜湊表資料結構,支援對field 的自增等操作

List 列表 ,支援按照索引,索引範圍獲取元素以及Pop Push 等堆疊操作

set 集合 及Zset 有序集合

在存入redis 時要生成一個唯一的key 在查詢和刪除資料時,可以使用找個key 進行相關操作

redis 功能:

redis 的功能非常強大,既可以作為資料庫也可以作為護岸村,還能當作佇列,總團體來講,有以下用途
1.簡單的string, 可以作為 memcached替代品,用作快取系統
2.使用list 的pop 和Push 功能 可以作為阻塞佇列/非阻塞佇列
3.使用subscribe 和publish 實現釋出/訂閱模式
4.對資料進行實時分析。
5.使用setz 做去重的計數統計
6.使用SortedSet 在排序

注意事項

由於redis 儲存是以記憶體為主,因此如何節省記憶體是非常關鍵的地方。
首先,key越短越好,可以採取編碼或者簡寫的方式。 同時key的數量也需要控制,可以考慮使用hash做二級快取儲存來合併類似的key 從而減少key 到底數量
其次,value 也是越小也好,尤其是在儲存序列化後的位元組時,要選擇最節省記憶體到底序列化方式。
有一點需要注意 的是 ,在儲存在redis 資料庫中的資料預設是永久儲存的,推薦指定一個時限來確定資料的宣告週期,超過時間限制的資料會被刪除。

Spring Boot對於 redis 的支援

StringRedisTemplate與RedisTemplate
都是redis 用來操作資料的類 雖然StringRedisTemplate繼承RedisTemplate,但是,兩者的資料是不共通的;也就是說StringRedisTemplate只能管理StringRedisTemplate裡面的資料RedisTemplate只能管理RedisTemplate中的資料 ,需要說明的是,由於RedisTemplate 使用的序列話是 jdk的序列化策略 ,這樣對於資料庫的檢視並不是很方便,因為jdk 序列化使用的是二進位制形式儲存資料,在檢視資料的時候,無法明確的檢視到資料的具體key

Spring 支援以下幾種序列化方式,可以通過重寫RedisTemplate 的序列化配置
StringRedisSerualizer 簡單的字串序列化,使用的是String.getBytess()方法,StringRedisTemplate 就是使用他作為key value hashKey 以及hashValue 的序列化實現的
GenericToStringSerializerr 可以將任何物件泛化為字串序列化,對於每一種物件型別都有不同的實現
Jackson2JsonRedisSerializer JSON 的序列化方式,使用jackkson mapper 將object 序列化為json字串
JdkSerializationRedisSerializer 使用jdk自帶的序列化機制,也是直接使用RedisTemplate 時使用的序列化機制。
序列化重寫程式碼:

@Configuration
public class RedisTemplateConfig {
    @Bean
    public RedisTemplate<String ,Object> redisTemplate(RedisConnectionFactory factory){
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);
        template.setKeySerializer(jackson2JsonRedisSerializer);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashKeySerializer(jackson2JsonRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

spring boot 使用redis 具體步驟

1.新增依賴

	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>

2.配置propertie檔案

spring.redis.host=ip
spring.redis.port=6379
spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.max-wait=-1
spring.redis.pool.min-idle=0

3.建立實體類 ,實現序列化

public class User implements Serializable {
    private final static long serialVersionUID=1L;
    private String name;
    private int age;
    }

4.如果使用RedisTemplate 則重寫redis 序列化配置
重寫程式碼參考上面
5.使用RedisTemplate 編寫具體的實現程式碼

    @Autowired
    private RedisTemplate redisTemplate;
    @Override
    public void add(String key, Student student) {
        redisTemplate.opsForValue().set(key,student);
    }

window 下 redis 安裝

1.下載 redis 安裝包 ,推薦使用redis 壓縮包。
2. 解壓redis 開啟cmd 進入redis 解壓目錄
3 是使用 .redis-server redis.windows.conf 使用該命令啟動( 使用這種方式並不是很方便,所以下面將redis 註冊為服務)
4。 註冊為服務 redis-server --service-install redis.windows-service.conf --loglevel verbose
以上redis 就安裝好了 , 可以下載redis-cli.exe 啟動redis 客戶端 進行測試