網(wǎng)站首頁 編程語言 正文
Redis 相關(guān)知識
Redis的默認端口號為6379
默認16個數(shù)據(jù)庫,類似數(shù)組下標(biāo)從0開始,初始默認使用0號庫。
使用命令select <dbid>
來切換數(shù)據(jù)庫。 如: select 8。
統(tǒng)一密碼管理,所有庫同樣密碼。
dbsize
查看當(dāng)前數(shù)據(jù)庫的key的數(shù)量。flushdb
清空當(dāng)前庫。flushall
通殺全部庫。
Redis是單線程+多路IO復(fù)用技術(shù)。
多路復(fù)用是指使用一個線程來檢查多個文件描述符( Socket )的就緒狀態(tài),比如調(diào)用select和poll函數(shù),傳入多個文件描述符,如果有一個文件描述符就緒,則返回,否則阻塞直到超時。得到就緒狀態(tài)后進行真正的操作可以在同一個線程里執(zhí)行,也可以啟動線程執(zhí)行(比如使用線程池)。
串行 VS 多線程+鎖 ( memcached) VS 單線程+ 多路IO復(fù)用(Redis)
Redis與Memcache三點不同:
- 支持多數(shù)據(jù)類型
- 支持持久化
- 單線程+多路IO復(fù)用
Redis中的數(shù)據(jù)類型
redis 鍵(key)
keys *
:查看當(dāng)前庫所有key (匹配 : keys *1)
exists key
:判斷某個key是否存在。type key
:查看你的key是什么類型。del key
:刪除指定的key數(shù)據(jù),
unlink key
:根據(jù)value選擇非阻塞刪除。僅將keys從keyspace元數(shù)據(jù)中刪除,真正的刪除會在后續(xù)異步操作。。expire key 10
:10 秒鐘,為給定的key設(shè)置過期時間,ttl key
:查看還有多少秒過期, -1表示永不過期, -2表示已過期。
select
命令切換數(shù)據(jù)庫,dbsize
查看當(dāng)前數(shù)據(jù)庫的key的數(shù)量。flushdb
清空當(dāng)前庫。flushall
通殺全部庫
Redis字符串(String)
String是Redis 最基本的類型,一個key對應(yīng)一個value。
String類型是二進制安全的。 意味著Redis的string可以包含任何數(shù)據(jù)。比如jpg圖片
或者序列化的對象。
String類型是Redis最基本的數(shù)據(jù)類型, 一個Redis中字符串value最多可以是512M。
常用命令
set、get等
set <key> <value>
:添加鍵值對。
當(dāng)設(shè)置過值的key再被設(shè)置一個新的值時,新的值會覆蓋舊的。
*NX:當(dāng)數(shù)據(jù)庫中key不存在時,可以將key-value添加數(shù)據(jù)庫。
*XX:當(dāng)數(shù)據(jù)庫中key存在時,可以將key-value添加數(shù)據(jù)庫,與NX參數(shù)互斥。
*EX: key的超時秒數(shù)。
*PX: key 的超時毫秒數(shù),與EX互斥。
get <key>
查詢對應(yīng)鍵值.append <key> <value>
將給定的< value >追加到原值的末尾,strlen <key>
獲得值的長度。setnx <key> <value>
只有在key不存在時設(shè)置 key的值.
增減建的值
incr <key>
將key中儲存的數(shù)字值增1。
只能對數(shù)字值操作,如果為空,新增值為10
decr <key>
將key中儲存的數(shù)字值減1。
只能對數(shù)字值操作。如果為空,新增值為-1。
inrjy/ decrby <key>
<步長> 將key中儲存的數(shù)字值增減。自定義步長。
注意:
incr和decr是原子操作
而java中的i++則不是原子操作
mset、mget和msetnx
mset <key1> <value1> <key2> <value2> ....
同時設(shè)置一個或多個key-value對。
mget <key1> <key2> <key3>
同時獲取一個或多個value。
msetnx <key1> <value1> <key2> <value2>
它是原子性的
同時設(shè)置一個或多個 key-value對,當(dāng)且僅當(dāng)所有給定key都不存在時,才成功。
有一個是之前存在的則不成功
getrange、setrange
getrange <key> <起始位置><結(jié)束位置>
獲得值的范圍,類似java中的substring ,前包,后包
setrange <key> <起始位置> <value>
用覆寫所儲存的字符串值,從<起始位置:開始(索引從0開始)。
設(shè)置過期時間
setex <key> <過期時間><value>
設(shè)置鍵值的同時,設(shè)置過期時間,單位秒。
替換舊值
getset <key> <value>
以新?lián)Q舊,設(shè)置了新值同時獲得舊值。
String的數(shù)據(jù)結(jié)構(gòu)
String的數(shù)據(jù)結(jié)構(gòu)為簡單動態(tài)字符串(Simple Dynamic String,縮寫SDS)。是可以修改的字符串,內(nèi)部結(jié)構(gòu)實現(xiàn)上類似于Java的ArrayList ,采用預(yù)分配冗余空間的方式來減少內(nèi)存的頻繁分配。
如圖中所示,內(nèi)部為當(dāng)前字符串實際分配的空間capacity一般要高于實際字符串長度len。當(dāng)字符串長度小于1M時,擴容都是加倍現(xiàn)有的空間,如果超過1M,擴容時一次只會多擴1M的空間。需要注意的是字符串最大長度為512M。
原文鏈接:https://blog.csdn.net/qq_45884783/article/details/122810543
相關(guān)推薦
- 2022-12-07 Android?IdleHandler使用方法詳解_Android
- 2022-06-29 Oracle中case?when函數(shù)的用法_oracle
- 2024-01-27 Linux關(guān)于Centos IP靜態(tài)配置
- 2022-07-30 C語言強制類型轉(zhuǎn)換規(guī)則實例詳解_C 語言
- 2022-05-31 Windows下搭建Redis集群的方法步驟_Redis
- 2023-01-01 Android?webView加載數(shù)據(jù)時內(nèi)存溢出問題及解決_Android
- 2022-10-25 Python條件語句的使用_python
- 2023-10-28 Nginx 出現(xiàn)403 Forbidden 的幾種解決方案
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支