- yum安裝redis
使用以下命令:直接將redis安裝到Linux服務器(Xshell)中
yum -y install redis
- 啟動redis
使用以下命令,以后臺運行方式啟動redis
redis-server /etc/redis.conf &
- 操作redis
使用以下命令啟動redis客戶端
redis-cli
具體可操作如下:
redis-cli:打開客戶端
set testname zhangsan:存放一個key
get testname:讀取一個key
-
設置遠程連接
a.將redis配置文件下載到本地;redis配置文件是linux下的/etc/redis.conf
b.將redis.conf中的“bin 127.0.0.1”注釋掉
c.將redis.conf中的“protected-mode yes"改為:“protected-mode no"
d.將修飾后的redis.conf上傳至linux下 的/etc目錄
e.使用命令”redis-cli shutdown“先關閉redis服務;在使用”redis-server /etc/redis.conf &“開啟redis服務
f.云服務防火墻或安全策略里面開放redis端口6379
redis有五大基礎數據類型:
String | 字符串類型(使用較多) |
Hash | 字典類型 |
List | 列表類型 |
Set | 集合類型 |
Zset | 有序集合類型 |
1.String:字符串類型(使用較多)
簡單動態字符串,它是從鍵值對key-value的形式存儲的,根據key來存儲和獲取value值,它的使用相對來說比較簡單,但是在實際項目中應用非常廣泛:
使用如下:
set k1 v1:添加數據
get k1:查詢數據
strlen k1:查詢字符串的長度
可以使用ex參數來設置字符串的過期時間
set k1 v1 ex 1000 :設置1000s后過期(刪除)
字符串的常見使用場景:
- 存放用戶登錄信息
- 存放文章詳情和列表信息
- 存放和累計網頁的統計信息
- …………………………
2.Hash:字典類型
字典類型又被稱為散列類型或者是哈希表類型,它是將一個鍵值(key)和一個特殊的“哈希表”關聯起來,這個“哈希表”包含兩列數據:字段和值,他就相當于Java中的Map<String , Map<String , String>>結構。
假如我們使用字典類型來存儲一篇文章的詳情信息,存儲結構如下:
同理,我們也可以使用字典類型來存儲用戶信息,并且字典類型來存儲此類信息就無需手動序列化和反序列化數據了,所以使用起來更加的方便和高校。
字典類型的使用如下:
hset myhash key1 value1:添加數據
hset myhash key1:查詢數據
字典類型的查詢數據只能一個一個的查詢,不能一次全部查詢完!!
通常情況下,字典類類型會使用數組的方式來存儲相關的數據,但發生哈希沖突時,才會使用鏈表的結構來存儲數據。
添加多個數據:hmset myhset age "16" sex "男"
查詢:hget myhset age
?????????? hget myhset sex
3.List:列表類型
列表類型是一個使用鏈表結構存儲的有序結構,它的元素插入會按照先后順序存儲到鏈表結構中,因此,它的元素操作(插入刪除實時間復雜度為O(1)),所以相對來說速度還是比較塊的,但它的查詢時間復雜度為O(n),因此查詢可能會比較慢。
列表類型使用如下:
lpush list 1 2 3:添加數據
lpop list :獲取并刪除列表的第一個元素
列表的典型使用場景可以有以下兩個:
- 消息隊列:列表類型可以使用rpush實現先進先出的功能,同時又可以使用lpop輕松的彈出(查詢并刪除)第一個元素,所以列表類型可以用來實現消息隊列。
- 文查列表:對于博客站點來說,用戶和文字都越來越多時,為了加快程序的響應速度,我們可以把用戶的文字存入到list中,因為List是有序的結構,所以這樣又可以完美的實現分頁功能,從而加速了程序的相應速度。
4.Set:集合類型
Set:集合類型是一個無序并唯一的鍵值集合
集合類型使用場景如下:
sadd myset v1 v2 v3 :添加數據
smembers myset :查詢集合中的所有數據
集合類型的經典使用場景如下:
- 微博關注我的人和我關注的人都適合用集合存儲,可以保證人員不會重復
- 中獎人信息也適合用集合類型存儲,這樣可以保證一個人不會重復中獎
集合類型(Set)和列表類型(List)的區別如下:
- 列表可以存儲重復元素,集合只能存儲非重復元素
- 列表是按照元素的先后順序存儲元素的,而集合是無序方式存儲元素的
5.Zset:有序集合類型
有序集合類型相比于集合類型多了一個排序屬性score(分值),對于有序集合Zset來說,每個存儲元素相當于兩個值組成的,一個是有序結合的元素值,一個屬排序值,有序集合的存儲元素值也是不能重復的,但分值是可以重復的。
當我們把學生的成績存儲在有序集合中,它的存儲結構如下所示:
有序集合類型的使用如下:
zadd zset1 3 golong 4 sql 1 redis:添加數據
zrange zset 0 -1 :查詢所有數據
有序集合的經典使用場景如下:
- 學生成績排名
- 粉絲列表,根據關注的先后時間排序
Spring Boot集成Redis的詳細教程:
首先,我們需要創建一個Spring Boot項目。可以使用IDEA或者Eclipse等工具創建,也可以直接在命令行中使用Spring Initializr來創建。這里我們以IDEA為例,步驟如下:
- 打開IntelliJ IDEA,點擊"Create New Project"。
- 選擇"Spring Initializr",點擊"Next"。
- 填寫項目的基本信息,如Group、Artifact、Name等,點擊"Next"。
- 選擇需要的依賴,這里我們需要添加"Web"和"Redis"的依賴,點擊"Next"。
- 確認項目的設置,點擊"Finish",等待項目創建完成。
三、添加Redis依賴
在項目的pom.xml文件中,添加Spring Boot對Redis的支持。代碼如下:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
四、配置Redis
在application.properties文件中,配置Redis的相關信息。代碼如下:
spring.redis.host=localhost
spring.redis.port=6379
五、創建Redis配置類
在項目中創建一個配置類,用于配置RedisTemplate。代碼如下:
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);return template;}
}
六、使用RedisTemplate操作Redis
在需要操作Redis的地方,注入RedisTemplate,然后使用其提供的方法進行操作。代碼如下:
@Service
public class UserService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// ...其他方法...
}
七、測試Redis操作
為了測試Redis的操作,我們可以在UserService中添加一個方法,用于向Redis中添加和獲取用戶信息。代碼如下:
@Service
public class UserService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// ...其他方法...public void addUser(String key, User user) {redisTemplate.opsForValue().set(key, user);}public User getUser(String key) {return (User) redisTemplate.opsForValue().get(key);}
}
八、啟動Spring Boot應用并測試Redis操作
啟動Spring Boot應用后,我們可以使用Postman或者瀏覽器等工具,調用UserService的addUser和getUser方法,測試Redis的操作。如果一切正常,我們應該可以看到用戶信息被正確地添加到Redis中,并且可以通過key獲取到用戶信息。
至此,我們已經成功地在Spring Boot項目中集成了Redis,并且可以正常使用RedisTemplate進行操作。在實際開發中,我們還可以使用Spring Data Redis提供的Repository接口,更方便地進行CRUD操作。同時,我們還可以使用Redis的發布/訂閱功能,實現消息的廣播和接收。