Redis中的鍵
Redis是鍵值型數據庫,Redis中的鍵只有一個類型,就是字符串。
Redis中的值
Redis值支持的類型有以下幾種:
- 字符串類型 string
- 列表類型 list
- 集合類型 set
- 有序集合類型 sorted set
- 哈希類型 hash
- HyperLogLog類型
- Geo類型
字符串類型string
1、字符串類型的存取操作,注意set執行成功會返回OK。
127.0.0.1:6379> set name "maoge"
OK
127.0.0.1:6379> get name
"maoge"
2、如果鍵不存在,則返回nil。
127.0.0.1:6379> get test
(nil)
3、使用strlen可以獲取字符串長度,當鍵不存在時返回0。
127.0.0.1:6379> strlen name
(integer) 5
127.0.0.1:6379> strlen test
(integer) 0
4、如果鍵已存在,再次執行set,則覆蓋鍵對應的值。
127.0.0.1:6379> set name "maoge"
OK
127.0.0.1:6379> set name "halo"
OK
127.0.0.1:6379> get name
"halo"
5、使用setnx,當鍵不存在時爲其設值,此時返回1;當鍵已存在則不改變鍵對應的值,返回0。
127.0.0.1:6379> setnx country "china"
(integer) 1
127.0.0.1:6379> get country
"china"
127.0.0.1:6379> setnx country "usa"
(integer) 0
127.0.0.1:6379> get country
"china"
6、使用mset/mget可以進行批量操作,這樣可以節省客戶端和服務器之間的通信開銷。
127.0.0.1:6379> mset age "12" sex "man"
OK
127.0.0.1:6379> mget age sex
1) "12"
2) "man"
列表類型list
常用操作如下:
- lrange 顯示指定索引範圍的元素(從0開始算)
- lpush 左側插入元素,返回插入後列表長度
- rpush 右側插入元素,返回插入後列表長度
- lpop 左側彈出元素
- rpop 右側彈出元素
注意,向不存在的鍵插入元素,Redis會自動創建list;如果列表爲空,Redis會自動回收該鍵。實例如下:
127.0.0.1:6379> lrange studetns 0 1
(empty list or set)
127.0.0.1:6379> lpush students "zhangsan"
(integer) 1
127.0.0.1:6379> rpush students "lisi"
(integer) 2
127.0.0.1:6379> lrange students 0 1
1) "zhangsan"
2) "lisi"
127.0.0.1:6379> lpop students
"zhangsan"
127.0.0.1:6379> rpop students
"lisi"
127.0.0.1:6379> lrange students 0 1
(empty list or set)
哈希類型hash
注意Redis數據集本身即是一個hash結構,類似於java中的map。
此處的哈希類型,指的是,Redis鍵對應的值的部分,依然是一個哈希類型。
1、hset設置單個哈希字段的值
127.0.0.1:6379> hset city beijing "001"
(integer) 1
127.0.0.1:6379> hset city shanghai "002"
(integer) 1
2、hget獲取單個哈希字段對應的值
127.0.0.1:6379> hget city beijing
"001"
3、hexists測試哈希字段是否存在
127.0.0.1:6379> hexists city beijing
(integer) 1
127.0.0.1:6379> hexists city tianjin
(integer) 0
4、hgetall獲取哈希所有字段值
127.0.0.1:6379> hgetall city
1) "beijing"
2) "001"
3) "shanghai"
4) "002"
5、刪除哈希字段
127.0.0.1:6379> hdel city beijing
(integer) 1
127.0.0.1:6379> hget city beijing
(nil)
6、批量設置、獲取哈希字段
127.0.0.1:6379> hmset city nanjing "003" shenzhen "004"
OK
127.0.0.1:6379> hmget city nanjing shenzhen
1) "003"
2) "004"