一、
redis
基本知識
-
redis
默認有16個
數據庫,config get databases
查看數據庫數量
127.0.0.1:6379> config get databases # 查看數據庫數量
1) "databases"
2) "16"
- 默認使用的是第
0個
16 個數據庫為:DB 0
~DB 15
,默認使用DB 0
- 可以使用
select
進行切換數據庫
select n
切換到DB n
,dbsize
可以查看當前數據庫的大小,與key
數量相關。
127.0.0.1:6379> select 1 # 切換到數據 1
OK
127.0.0.1:6379[1]> dbsize # 查看數據庫大小
(integer) 0
127.0.0.1:6379[1]> keys * # 查看數據庫中所有的 key
- 清除當前的數據庫
flushdb
127.0.0.1:6379> flushdb # 清除當前的數據庫
- 清除所有的數據庫
flushall
127.0.0.1:6379> flushall # 清除所有的數據庫
Redis
是單線程的,Redis
是基于內存操作的
所以Redis
的性能瓶頸不是CPU
,而是機器內存和網絡帶寬。Redis
為什么單線程還這么快?QPS
達到10W+
誤區1:高性能的服務器一定是多線程的?
誤區2:多線程(CPU
上下文會切換!)一定比單線程效率高!核心:
Redis
是將所有的數據放在內存中的,所以說使用單線程去操作效率就是最高的,多線程(CPU
上下文會切換:耗時的操作!),對于內存系統來說,如果沒有上下文切換效率就是最高的,多次讀寫都是在一個CPU
上的,在內存存儲數據情況下,單線程就是最佳的方案。
二、五大數據類型
-
Redis
是一個開源(BSD
許可)的,內存中的數據結構存儲系統,它可以用作數據庫
、緩存
和消息中間件 MQ
。 - 它支持多種類型的數據結構,如:
1、字符串(strings
)
2、散列(hashes
)
3、列表(lists
)
4、集合(sets
)
5、有序集合(sorted sets
)
與范圍查詢,bitmaps
,hyperloglogs
和 地理空間(geospatial
) 索引半徑查詢。 -
Redis
內置了 復制(replication
),LUA
腳本(Lua scripting
),LRU
驅動事件(LRU eviction
),事務(transactions
) 和不同級別的 磁盤持久化(persistence
), 并通過Redis
哨兵(Sentinel
)和自動 分區(Cluster
)提供高可用性(high availability
)。
Redis-key
- 在
redis
中無論什么數據類型,在數據庫中都是以key-value
形式保存,通過進行對Redis-key
的操作,來完成對數據庫中數據的操作。
常用命令:
-
exists [key]
:判斷key是否存在 -
del [key]
:刪除鍵值對 -
move [key] [db]
:將鍵值對移動到指定數據庫 -
expire [key] [seconds]
:設置過期時間 -
ttl [key]
:(time to live
) 查看當前key
剩余時間 -2 代表已經過期 -
type [key]
:查看key
的類型
type
數據返回類型:
-
none
(key
不存在) string
(字符串)list
(列表)set
(集合)zset
(有序集)hash
(哈希表)
三、測試
127.0.0.1:6379> keys * # 查看當前數據庫所有key
(empty list or set)
(empty array)
127.0.0.1:6379> set name yj # set key
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> exists name # 判斷鍵是否存在
(integer) 1 # 存在
127.0.0.1:6379> exists name1
(integer) 0 # 不存在
127.0.0.1:6379> move name 1 # 將 name 移動到數據庫1 中
(integer) 1
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> set name yj
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> get name
"yj"
127.0.0.1:6379> expire name 10 # 設置鍵值對的過期時間
(integer) 1
127.0.0.1:6379> ttl name # 查看當前 key 的剩余時間
(integer) -2 # -2 已經過期
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> move age # 將 age 移動到數據庫1 中
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "age"
2) "name"
127.0.0.1:6379[1]> select 0 # 切換到數據庫 0中
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> select 1 # 切換到數據庫 1中
OK
127.0.0.1:6379[1]> keys *
1) "age"
2) "name"
127.0.0.1:6379[1]> del name # 刪除鍵值對
(integer) 1 # 刪除個數
127.0.0.1:6379[1]> keys *
1) "age"
127.0.0.1:6379[1]> del age
(integer) 1
127.0.0.1:6379[1]> keys *
(empty array)
127.0.0.1:6379> type name 查看value的數據類型
string
- 查看更多命令:官方地址
? 著作權歸作者所有,轉載或內容合作請聯系作者

喜歡的朋友記得點贊、收藏、關注哦!!!