1. 程式人生 > 實用技巧 >Redis 命令之 String

Redis 命令之 String

redis 是開源免費, 基於記憶體操作的kv非關係資料

redis 為什麼是單執行緒還這麼快?
redis 是將所有的資料都放在記憶體中,所以說單執行緒操作就是最高的。多執行緒(cpu上下文切換:是個一個非常耗時的操作) 對於記憶體系統來說,如果沒有上下文切換,效率就是最高的 多次讀寫都是在一個cpu上面的

庫, redis的優點就是基於記憶體操作,資料型別多(,有五個常用的資料型別, 有三個不常用的資料.) 查詢速度快. redis是單執行緒的。 redis預設的資料庫有16個

redis-cli # 啟動redis 資料庫
192.168.120.128:6379> ping  #
驗證redis 設定是否正確 PONG # 返回 PONG # 新增一個kv的資料 set 就是新增 set key value 192.168.120.128:6379> set name xiaomo OK # get 獲取新增的key set key 192.168.120.128:6379> get name "xiaomo" # 檢視所有的key 192.168.120.128:6379> keys * 1) "name" # 清楚當前庫中所有的key 192.168.120.128:6379> flushdb OK 192.168.120.128:6379> keys * (empty array)
192.168.120.128:6379> # 清楚所有庫中的key 192.168.120.128:6379> flushall OK 192.168.120.128:6379> keys * (empty array) # 切換資料庫 192.168.120.128:6379> select 1 OK 192.168.120.128:6379[1]>
192.168.120.128:6379> set name xiaomo
OK
192.168.120.128:6379> get name
"xiaomo"
# 判斷這個key 是否存在
192.168.120.128:6379> exists name
(integer) 
1 # 將你的key 移動到 db1 資料庫中 語法格式 move key db 192.168.120.128:6379> move name 1 (integer) 1 # 切換資料庫 192.168.120.128:6379> select 1 OK # 查詢所有的key 36 192.168.120.128:6379[1]> keys * 1) "name" # 設定一個key的過期時間 單位是秒 192.168.120.128:6379> EXPIRE name 10 (integer) 1 # ttl 檢視當前key的剩餘時間 192.168.120.128:6379> ttl name (integer) 8

# 檢視key 資料型別 type
192.168.120.128:6379> type name
string
192.168.120.128:6379> type age
string

redis 資料型別
String(字串)
# APPEND 尾部新增  (如果當前key 不存在就相當於set key values)
192.168.120.128:6379> set name tom1
OK
192.168.120.128:6379> APPEND name 'good student'
(integer) 16
192.168.120.128:6379> get name
"tom1good student"
# strlen  獲取字串長度
192.168.120.128:6379> STRLEN name
(integer) 16


192.168.120.128:6379> set views 0
OK
192.168.120.128:6379> get views
"0"
# + 1   相當於 i++

'''
#  incr  +1 
#  decr  -1
#  incrby key + 設定預設步長
#  decrby key - 設定預設步長
'''
192.168.120.128:6379> incr views
(integer) 1
192.168.120.128:6379> incr views
(integer) 2
192.168.120.128:6379> decr views
(integer) 1
192.168.120.128:6379> get views
"1"
192.168.120.128:6379> INCRBY views 10
(integer) 10
192.168.120.128:6379> DECRBY views 5
(integer) 5
192.168.120.128:6379> get views
"5"



192.168.120.128:6379> set key1 tom1
OK

#  GETRANGE 擷取字串內容
192.168.120.128:6379> GETRANGE key1 0 1
"to"
#  獲取全部字串
192.168.120.128:6379> GETRANGE key1 0 -1
"tom1"



192.168.120.128:6379> set key2 xiaomo
OK
192.168.120.128:6379> get key2
"xiaomo"
# SETRANGE 替換  語法 格式  SETRANGE key [第幾個字元] [替換內容]
192.168.120.128:6379> SETRANGE key2 1 a
(integer) 6
192.168.120.128:6379> get key2
"xaaomo"


# setex key [過期時間] value 
192.168.120.128:6379> SETEX key3 10 hello
OK
192.168.120.128:6379> ttl key3
(integer) 4看
# setnx  key value   TRUE = 1 False=0
# 如果這個key 存在則返回0 如果這個key不存在返回1 
192.168.120.128:6379> SETNX key3  'redis'
(integer) 1
192.168.120.128:6379> keys * 
1) "key2"
2) "key1"
3) "key3"
192.168.120.128:6379> SETNX key3 're'
(integer) 0


# mset 設定多個 key 一個key對應一個value
192.168.120.128:6379> mset k1 v1 k2 v2 k3 v3
OK
# mget 查詢多個key  
192.168.120.128:6379> MGET k1 k2 k3
1) "v1"
2) "v2"
3) "v3"

# MSETNX 如果這個key不存在就建立, 注意這是一個原子操作,要麼都成功 要麼都失敗。
192.168.120.128:6379> MSETNX  k1 v1 k5 v5
(integer) 0


192.168.120.128:6379> mset user:1:name tom user:1:age 10
OK
192.168.120.128:6379> mget user:1:name user:1:age
1) "tom"
2) "10"


# 如果不存在值,返回nil
192.168.120.128:6379> GETSET db redis
(nil)
192.168.120.128:6379> get db
"redis"
# 如果存在新的值,返回原來的值,並設定新的值
192.168.120.128:6379> getset db mongodb
"redis"
192.168.120.128:6379> get db
"mongodb"


# 一般應用場景 STRING : 來設定統計數