網站首頁 編程語言 正文
1 Redis數據結構介紹
Redis是一個key-value的數據庫,key一般是String類型,不過value的類型多種多樣:
value的數據類型共有8種,前面5中為基本數據類型,后面3種是針對不同的情況指定的特殊數據類型。
命令不要死記,學會查詢就好啦
Redis為了方便我們學習,將操作不同數據類型的命令也做了分組,在官網( Commands | Redis)可以查看到不同的命令:(點擊COMMANDS)
當然我們也可以通過Help命令來幫助我們去查看命令
2 Redis通用命令
通用指令是部分數據類型的,都可以使用的指令,常見的有:
- KEYS:查看符合模板的所有key
- DEL:刪除一個指定的key
- EXISTS:判斷key是否存在
- EXPIRE:給一個key設置有效期,有效期到期時該key會被自動刪除
- TTL:查看一個KEY的剩余有效期
通過help [command] 可以查看一個命令的具體用法,例如:
接下來演示上述常用命令的使用:
溫馨提示:以下的內容所有的代碼塊都是從命令行窗口復制過來的,包括命令和結果哦~
1.KEYS:查看符合模板的所有key
127.0.0.1:6379> keys *
1) "name"
2) "age"
127.0.0.1:6379>
# 查詢以a開頭的key
127.0.0.1:6379> keys a*
1) "age"
127.0.0.1:6379>
貼心小提示:在生產環境下,不推薦使用keys 命令,因為這個命令在key過多的情況下,效率不高
2.DEL:刪除一個指定的key
127.0.0.1:6379> help del
? DEL key [key ...]
? summary: Delete a key
? since: 1.0.0
? group: generic
127.0.0.1:6379> del name #刪除單個
(integer) 1 ?#成功刪除1個
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 #批量添加數據
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
4) "age"
127.0.0.1:6379> del k1 k2 k3 k4
(integer) 3 ? #此處返回的是成功刪除的key,由于redis中只有k1,k2,k3 所以只成功刪除3個,最終返回
127.0.0.1:6379>
127.0.0.1:6379> keys * #再查詢全部的key
1) "age"?? ?#只剩下一個了
127.0.0.1:6379>
貼心小提示:在拷貝代碼的時候,只需要拷貝對應的命令哦~
3.EXISTS:判斷key是否存在
127.0.0.1:6379> help EXISTS
? EXISTS key [key ...]
? summary: Determine if a key exists
? since: 1.0.0
? group: generic
127.0.0.1:6379> exists age
(integer) 1
127.0.0.1:6379> exists name
(integer) 0
4.EXPIRE:給一個key設置有效期,有效期到期時該key會被自動刪除
5.TTL:查看一個KEY的剩余的存活時間
127.0.0.1:6379> expire age 10
(integer) 1
127.0.0.1:6379> ttl age
(integer) 8
127.0.0.1:6379> ttl age
(integer) 6
127.0.0.1:6379> ttl age
(integer) -2
127.0.0.1:6379> ttl age
(integer) -2 ?#當這個key過期了,那么此時查詢出來就是-2?
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set age 10 #如果沒有設置過期時間
OK
127.0.0.1:6379> ttl age
(integer) -1 ?# ttl的返回值就是-1
貼心小提示:
(1)內存非常寶貴,對于一些數據,我們應當給他一些過期時間,當過期時間到了之后,他就會自動被刪除~
(2)當使用TTL命令時,如果返回 -1 值,不是代表已經被銷毀,而是代表永久哦~
3 Redis命令-Key的層級結構
Redis沒有類似MySQL中的Table的概念,我們該如何區分不同類型的key呢?
例如,需要存儲用戶.商品信息到redis,有一個用戶id是1,有一個商品id恰好也是1,此時如果使用id作為key,那就會沖突了,該怎么辦?
我們可以通過給key添加前綴加以區分,不過這個前綴不是隨便加的,有一定的規范:
Redis的key允許有多個單詞形成層級結構,多個單詞之間用':'隔開,格式如下:
這個格式并非固定,也可以根據自己的需求來刪除或添加詞條。
這個格式并非固定,也可以根據自己的需求來刪除或添加詞條。
例如我們的項目名稱叫 heima,有user和product兩種不同類型的數據,我們可以這樣定義key:
- user相關的key:heima:user:1
- product相關的key:heima:product:1
如果Value是一個Java對象,例如一個User對象,則可以將對象序列化為JSON字符串后存儲:
KEY | VALUE |
---|---|
heima:user:1 | {"id":1, "name": "Jack", "age": 21} |
heima:product:1 | {"id":1, "name": "小米11", "price": 4999} |
一旦我們向redis采用這樣的方式存儲,那么在可視化界面中,redis會以層級結構來進行存儲,形成類似于這樣的結構,更加方便Redis獲取數據
原文鏈接:https://blog.csdn.net/qq_59212867/article/details/127892871
相關推薦
- 2022-10-15 Qt實現簡單UDP通信_C 語言
- 2022-09-13 Nginx報錯104:Connection?reset?by?peer問題的解決及分析_nginx
- 2022-08-26 C++宏函數和內聯函數的使用_C 語言
- 2023-01-26 C#實現批量Word轉換Html的示例代碼_C#教程
- 2022-07-21 安裝MiniConda和Pytorch以及Cuda的筆記及心得
- 2022-12-16 C++?Futures與Promises線程使用示例講解_C 語言
- 2023-03-22 tkinter如何實現打開文件對話框并獲取文件絕對路徑_python
- 2022-10-10 Python?pygame?動畫游戲循環游戲時鐘實現原理_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支