Redis是什麼?
不同於MySql,MySql是基於二維表儲存資料,而Redis是一個基於記憶體的key-value鍵值對結構資料庫
我們為什麼要用Redis?
- 基於記憶體儲存,讀寫性很高
- 適合儲存熱點資料,(熱點商品,資訊,新聞)
- 企業應用廣泛
Redis是對MySql的補充,與其共存,大部分資料放在MySql中。
Redis官網:https:/redis.io
在cmd中,我們啟動Redis的命令為:redis-server.exe redis.windows.conf
Redis服務啟動後,預設佔用埠號6379,如果要停止服務可以使用快捷鍵CTRL+C。
啟動服務後,連線客戶端預設不要密碼,也可以在配置檔案redis.windows.conf
中修改密碼
在redis.windows.conf
檔案中找到# requirepass foobared
一行
刪除#
,在requirepass
後指定自己的密碼
樣式:requirepass 123456
,注意有一個空格
這樣,連線客戶端時,我們就需要提供修改後的密碼
連線客戶端用redis-cli.exe命令,也可以在後面加上-h和-p來指定地址和埠
-a用來指定密碼
Redis儲存的是key-value結構的資料,其中key是字串型別,value有5種常見型別:
——字串string 普通字串,Redis中最簡單的資料型別
——雜湊 hash 也叫雜湊,類似於Java中的HashMap結構
——列表 list 按照插入順序排序,可以有重複元素,類似於Java中的LinkedList
——集合 set 無序集合,沒有重複元素,類似於Java中的HashSet
——有序集合 sorted set / zset 集合中每個元素關聯一個分數(score),根據分數升序排序,沒有重複元素
字串操作命令:
Redis 字串型別常用命令:
- SET key value 設定指定key的值
- GET key 獲取指定key的值
- SETEX key seconds value 設定指定key的值,並將 key 的過期時間設為 seconds 秒
- SETNX key value 只有在 key 不存在時設定 key 的值
雜湊操作命令:
Redis hash 是一個string型別的 field 和 value 的對映表,hash特別適合用於儲存物件,常用命令:
- HSET key field value 將雜湊表 key 中的欄位 field 的值設為 value
- HGET key field 獲取儲存在雜湊表中指定欄位的值
- HDEL key field 刪除儲存在雜湊表中的指定欄位
- HKEYS key 獲取雜湊表中所有欄位
- HVALS key 獲取雜湊表中所有值
列表操作命令:
Redis 列表是簡單的字串列表,按照插入順序排序,常用命令:
- LPUSH key value1 [value2] 將一個或多個值插入到列表頭部(左邊)
- LRANGE key start stop 獲取列表指定範圍內的元素
- RPOP key 移除並獲取列表最後一個元素(右邊)
- LLEN key 獲取列表長度
集合操作命令:
Redis set 是string型別的無序集合。集合成員是唯一的,集合中不能出現重複的資料,常用命令:
- SADD key member1 [member2] 向集合新增一個或多個成員
- SMEMBERS key 返回集合中的所有成員
- SCARD key 獲取集合的成員數
- SINTER key1 [key2] 返回給定所有集合的交集
- SUNION key1 [key2] 返回所有給定集合的並集
- SREM key member1 [member2] 刪除集合中一個或多個成員
有序集合操作命令:
Redis有序集合是string型別元素的集合,且不允許有重複成員。每個元素都會關聯一個double型別的分數。常用命令:
- ZADD key score1 member1 [score2 member2] 向有序集合新增一個或多個成員
- ZRANGE key start stop [WITHSCORES] 透過索引區間返回有序集合中指定區間內的成員
- ZINCRBY key increment member 有序集合中對指定成員的分數加上增量 increment
- ZREM key member [member ...] 移除有序集合中的一個或多個成員
通用命令:
Redis的通用命令是不分資料型別的,都可以使用的命令:
- KEYS pattern 查詢所有符合給定模式( pattern)的 key
- EXISTS key 檢查給定 key 是否存在
- TYPE key 返回 key 所儲存的值的型別
- DEL key 該命令用於在 key 存在是刪除 key
Spring Data Redis使用方式
操作步驟:
1.在pom檔案中匯入Spring Data Redis 的maven座標
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.在application.yml檔案中配置Redis資料來源
spring:
redis:
host: localhost
port: 6379
password: 123456
3.編寫配置類,建立RedisTemplate物件
點選檢視程式碼
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
log.info("開始建立redis模板類...");
RedisTemplate redisTemplate = new RedisTemplate();
// 設定Key的序列化器,預設為JdkSerializationRedisSerializer
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
}
4.透過RedisTemplate物件操作Redis
RedisTemplate 針對大量api進行了歸類封裝,將同一資料型別的操作封裝為對應的Operation介面,具體分類如下:
- ValueOperations:string資料操作
- SetOperations:set型別資料操作
- ZSetOperations:zset型別資料操作
- HashOperations:hash型別的資料操作
- ListOperations:list型別的資料操作