Redis命令總結
1.查看所有key值
keys *
2.刪除key,支持批量刪除
del key1 key2... //返回的結果是成功的個數
3.返回序列化的值
dump key
4.返回key是否存在
exists key1 key2... //返回存在的個數
5.設置、取消過期時間(單位:秒、毫秒)
expire key seconds
pexpire key milliseconds
取消
persist key
使用場景:
6.返回key的剩餘生存時間(單位:秒、毫秒)
ttl key //秒,永久返回-1,key不存在返回-2
pttl key //毫秒
**7.添加key-value,取值 **
set <key> <value>
setnx <key> <value> //當key不存在的時候,爲key賦值
get key
8.查找key
keys pattern(通配符)
*代表查詢所有 ?代表一個符號
9.隨機返回key
randomkey
10.修改key的名稱
rename key newkey
11.返回key的類型
type key
12.從當前數據庫移動key到指定數據庫中
move key db
13.切換數據庫
select [index]
14.截取字符串
getrange key start end //包括start end在內
15.獲取並賦值key的值
getset key value //若key不存在,則返回nil;若存在,返回key的值並修改
strlen key //查看長度
16.自增自減
incr key [增量] //執行增量操作,如果不存在則賦值0再加一
decr key [減量]
17.字符串拼接
append key value //如果存在,就添加到最後
關於Hash的命令
Redis hash是一個string類型的field和value的映射表, hash特別適合用,於存儲對象, Redis中每個hash可以存儲232-1鍵值對(40多億)可以看成具有KEY和VALUE的MAP容器,該類型非常適合於存儲值對象的信息,該類型僅佔據很少的內存空間(相比於JSON)。
1.賦值語法,可以一次賦值多個屬性
hset key field value [field2 value2] //爲指定的key設定field/value
hmset key field value [field2 value2]
2.hash取值
hget key field //根據field取值
hmget key field [field2] //根據field取一系列的值
hgetall key //獲取所有字段和值
3.獲取hash中的字段
hkeys key //獲取hash表中的字段
hlen key //返回字段的數量
4.刪除語法
hdel key field1 [field2] //刪除一個或多個字段
Hash的應用場景(存儲一個用戶信息對象數據)
1、常用於存儲一個對象
2、 爲什麼不用string存儲一個對象?
hash是最接近關係數據庫結構的數據類型,可以將數據庫一條記錄或程序中一個對象轉換成hashmap存放在redis中。用戶ID爲童找的key,存儲的value用戶對象包含姓名,年齡,生日等信息,如果用普通的key/value結構來存儲,主要有以下2種存儲方式:
第一種方式將用戶ID作爲董找key,把其他信息封菜成一個對象以序列化的方式存儲,這種方式的缺點是,增加了序列化/反序列化的開銷,並且在需要修改其中一項信息時,需更把整個對象取回,並且修改操作需要對併發進行保護,引入CAS等復奈問題。
第二種方法是這個用戶信息對蒙有多少成員就存成多少個key-value對兒,用用戶ID+對應屬性的名稱作爲唯一標識來取得對應屬性的值,雖然省去了序列化開銷和併發問題,但是用戶ID爲重複存儲,如果存在大量這樣的數據,內存浪費還是非常可觀的。總結:Redis提供的Hash很好的解決了這個問題, Redis的Hash實際是內部存儲的Value爲一個HashMlap,並提供了直接存取這個Map成員的接口.