Redis 命令之 String
阿新 • • 發佈:2020-08-28
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 : 來設定統計數