作為一種開源(BSD授權)的記憶體資料結構儲存系統,Redis可用於作為資料庫、快取和訊息中介軟體。它支援多種類型的資料結構,如字串(strings),雜湊(hashes),列表(lists),集合(sets),有序集合(sorted sets)與範圍查詢,bitmaps,hyperloglogs 和地理空間( geospatial) 索引半徑查詢。
Redis 內建了複製(replication),LUA腳本(Lua scripting),LRU驅動事件(LRU eviction),事務(transactions)和不同層級的磁碟持久化(persistence),並透過Redis哨兵(Sentinel )和自動分區(Cluster)提供高可用性(high availability)。
redis是基於記憶體操作的,cpu並不是redis的效能瓶頸,它的瓶頸取決於機器的記憶體和網路頻寬,所以能用單執行緒實作那就用單線程好了。
那為什麼用單線程還能這麼快?
首先有2個誤解先要明確:
高效能的伺服器不一定是多執行緒的。
多執行緒也不是一定比單執行緒效率高。
redis是將所有的資料放到記憶體裡去,多執行緒的話反而會存在cpu切換上下文從而增加耗時,而對記憶體系統來說,沒有上下文的切換,單線程操作效率就是最高的。
redis預設有16個資料庫,預設使用是第一個資料庫(下標為0)。可以查看下設定文件,裡面有database 16
。
select 3
,可以切換到第4個資料庫。
dbsize
可以查看目前資料庫大小。
這時,給資料庫裡set一個值,再查看資料庫大小,就改變了。
清空目前的資料庫
flushdb
清空所有的資料庫
flushall
set name pingguo222
可以查看所有的key。這裡切換回預設的資料庫,查看所有key。
keys *
get name
exists name
存在,則回傳1,不存在則回傳0。
MOVE 指令是將目前資料庫的 key 移到給定的資料庫 db 當中。
move name 0
例如,假設目前位於3資料庫,要執行指令將名為"name"的內容移到0資料庫。如果成功了返回1,失敗了返回0。
我設定age 10s後過期,等10s後再get就拿不到值了。
expire age 10
我設定name過期時間100s,使用ttl查看。
ttl name
type name
指令其實有很多,redis官網提供了查詢指令的地方,後面啥不會就查啥。
以上是Redis入門基礎常用操作指令執行個體分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!