redis基本類型與操作

1、Redis版本約定
小數點之後的第一位是偶數爲穩定版本
小數點之後的第一位是奇數爲不穩定版本

2、redis啓動與停止
啓動:redis-server redis服務會默認啓動6379端口號
           redis-server --port 6370 啓動指定端口的redis
停止:
           最好不要強制停止,因爲redis可能正在往硬盤中寫入數據,強制停止會造成數據丟失
           正確停止的方法:redis-cli shutdown 默認服務127.0.0.1 默認端口6379
           redis-cli shutdown
           向redis發動shutdown命令,redis收到後會先斷開所有客戶端連接,然後根據配置執行持久化,最後完成退出
           kill redis的pid也可以正常停止redis

3、redis-cli redis命令行客戶端
可通過reids-cli向redis發送命令
發送命令的兩種方式:
           將命令作爲redis-cli的參數執行,如
                      redis-cli -h ip -p port 連接指定ip與port的redis
                      redis shutdown 停止reids
                      redis-cli ping 連接是否正常,正常返回pong
           執行redis-cli不帶參數進入redis交互模式,可自由輸入命令

4、 redis多數據庫
(1)redis是字典結構的存儲服務器
           一個redis可提供多個用於存儲數據的字典,每個字典(類似於數據庫)對外是一個從0開始遞增的數字,
           這些字典不支持自定義也不能對每個庫設置不同的密碼
           與mysql庫最大的區別在於每個庫之間並不是完全隔離的,如flushall可以清楚redis實例中所有數據庫的全部數據
(2)客戶端可以指定存儲在那個庫裏面,如select 1
(3)redis默認支持16的庫,即存儲字典
(4)redis非常輕量級,一個空redis實例只佔用內存空間大小爲1MB左右

5、glob風格通配符
           ? 匹配一個
           * 匹配任意個(包括0個)
           [] 匹配括號間的任意字符,可以使用"-"表示一個範圍,如:a[b-d] 則ab\ac\ad均可以
           \X 匹配字符X,用於轉義字符,如匹配?,可以用?

6、、redis常用命令(redis命令不區分大小寫)
(1)字符串類型常用命令:
           創建key:set keyname keyvalue
           獲取所用key:keys * (當key的數量多的時候會影響性能,生產環境不建議使用)
           判斷一個鍵是否存在:exists keyname 存在返回整數1,不存在返回整數0
           刪除鍵:delete keyname 返回刪除鍵的個數
           獲取鍵值:get keyname 當鍵不存在的時候返回空
           獲取鍵值的數據類型:type keyname 數據類型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使當前鍵值遞增加1:incr keyname 如果當前存儲的字符串是整數類型,使用該命令會遞增,並返回遞增後的值
                      如果key不存在,默認key值爲0,所以使用該命令後返回1
                      如果存儲的字符串不是整數類型,會報錯
                      incr 的所有redis命令均爲原子性操作,即命令執行的最小單位,執行過程中不會被其他命令插入
           使當前鍵值遞減減1: decr keyname
           使當前鍵遞增指定數值:incrby keyname 6
           使當前鍵遞減指定數值:decrby keyname 6
           增加指定浮點數: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引號,如:" a b "
           獲取字符串長度: strlen keyname 返回字符串長度,如果鍵不存在返回0
                       set name 你好,返回長度爲6,因爲漢字採用utf-編碼長度均爲3
           注意:reids對於鍵值的命名沒有明確要求,但是起名字最好通俗易懂,如:user_007_gender,用戶id爲007的性別

(2)散列類型常用命令:
           redis以字典形式存儲數據,而hash的鍵值也是以字典形式存儲
           hash賦值:hset keyname field value
                      hsetnx keyname field value
                      均不區分插入和更新操作,如果已經存在key field則更新並返回0,如果不存在key field增插入並返回1
                      二者的區別:hsetnx是原子操作,不用擔心競爭條件
           hash獲取值:hget keyname field
                      hmget keyname field1 field2
           hash獲取指定鍵值對應的所有值:hgetall keyname
           刪除字段:hdel keyname field1 field2
           使字段增加數值:hincrby keyname field 10
           獲取hash的所有鍵:hkeys keyname
           獲取hash的所有鍵值:hvals keyname
           獲取字段的數量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表類型常用命令:
           一個有序的字符串列表,操作是可以向列表兩端添加元素或者獲得列表中的某一片段,內部使用雙向鏈表實現
           向列表兩端插入元素:
                      向左邊插入:lpush keyname value1 value2 返回值爲增加元素後列表的長度
                      向右邊插入:rpush keyname value1 value2 返回值爲增加元素後列表的長度
           從列表兩端移除元素:
                      從左邊移除:lpop keyname
                      從右邊移除:rpop keyname
           獲取列表中元素個數:llen keyname
           獲取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是從0開始,爲閉區間含左含右
                      lrange命令支持負索引,表示從右邊開始計算序數,
                      如lrange keyname -2 -1 取的是倒數兩個元素
                      如果stop大於實際列表長度,會返回列表最右端元素
                      顯然lrange keyname 0 -1 會獲取所有元素
           刪除列表中指定元素:lrem keyname count value 刪除列中前count個值爲value的元素
                      count>0 從左邊還是刪除, count<0 從右邊開始刪除, count=0 刪除所有值爲value的元素
           獲取指定元素的索引值:lindex keyname index
           設置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 刪除指定範圍之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      從左往右尋找值爲pivot的元素,在它的前面或者後面插入value值

(4)集合類型常用命令:
           集合中的元素無序不重複
           增加元素:sadd keyname value1 value2
           刪除元素:srem keyname value1 value2
           獲取集合中的所有元素:smembers keyname
           判斷元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           兩個集合的差集:sdiff key1 key2 返回屬於key1但是不屬於key2的元素
           兩個集合的交集:sinter key1 key2
           兩個集合的並集:sunion key1 key2
           獲取集合中元素個數:scard key

(5)有序集合類型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           獲取元素的分數:zscore key member1
           獲取排名在某個範圍內的元素列表:zrange key startindex stopindex 只返回members並按照從小到大的順序排序
                      zrange key startindex stopindex withscores 返回members和scores
           獲取指定分數範圍內的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           獲取指定分數範圍內元素的個數:zcount keyname min max
           增加某個元素的分數:zincrby key 5(加5)/-5(減5) member 給指定的member元素添加score,返回的時增加後的結果分數
                      如果指定元素不存在,redis會先創建並賦值爲0再執行
           獲取集合中元素個數:zcard keyname 返回元素的個數
           刪除一個或多個元素:zrem keyname member1 member2 返回成功刪除的個數
           按照分數範圍刪除元素:zremrangebyscore keyname min max
           獲取某個元素的排名:zrank keyname member? 匹配一個
(1)字符串類型常用命令:
           創建key:set keyname keyvalue
           獲取所用key:keys * (當key的數量多的時候會影響性能,生產環境不建議使用)
           判斷一個鍵是否存在:exists keyname 存在返回整數1,不存在返回整數0
           刪除鍵:delete keyname 返回刪除鍵的個數
           獲取鍵值:get keyname 當鍵不存在的時候返回空
           獲取鍵值的數據類型:type keyname 數據類型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使當前鍵值遞增加1:incr keyname 如果當前存儲的字符串是整數類型,使用該命令會遞增,並返回遞增後的值
                      如果key不存在,默認key值爲0,所以使用該命令後返回1
                      如果存儲的字符串不是整數類型,會報錯
                      incr 的所有redis命令均爲原子性操作,即命令執行的最小單位,執行過程中不會被其他命令插入
           使當前鍵值遞減減1: decr keyname
           使當前鍵遞增指定數值:incrby keyname 6
           使當前鍵遞減指定數值:decrby keyname 6
           增加指定浮點數: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引號,如:" a b "
           獲取字符串長度: strlen keyname 返回字符串長度,如果鍵不存在返回0
                       set name 你好,返回長度爲6,因爲漢字採用utf-編碼長度均爲3
           注意:reids對於鍵值的命名沒有明確要求,但是起名字最好通俗易懂,如:user_007_gender,用戶id爲007的性別

(2)散列類型常用命令:
           redis以字典形式存儲數據,而hash的鍵值也是以字典形式存儲
           hash賦值:hset keyname field value
                      hsetnx keyname field value
                      均不區分插入和更新操作,如果已經存在key field則更新並返回0,如果不存在key field增插入並返回1
                      二者的區別:hsetnx是原子操作,不用擔心競爭條件
           hash獲取值:hget keyname field
                      hmget keyname field1 field2
           hash獲取指定鍵值對應的所有值:hgetall keyname
           刪除字段:hdel keyname field1 field2
           使字段增加數值:hincrby keyname field 10
           獲取hash的所有鍵:hkeys keyname
           獲取hash的所有鍵值:hvals keyname
           獲取字段的數量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表類型常用命令:
           一個有序的字符串列表,操作是可以向列表兩端添加元素或者獲得列表中的某一片段,內部使用雙向鏈表實現
           向列表兩端插入元素:
                      向左邊插入:lpush keyname value1 value2 返回值爲增加元素後列表的長度
                      向右邊插入:rpush keyname value1 value2 返回值爲增加元素後列表的長度
           從列表兩端移除元素:
                      從左邊移除:lpop keyname
                      從右邊移除:rpop keyname
           獲取列表中元素個數:llen keyname
           獲取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是從0開始,爲閉區間含左含右
                      lrange命令支持負索引,表示從右邊開始計算序數,
                      如lrange keyname -2 -1 取的是倒數兩個元素
                      如果stop大於實際列表長度,會返回列表最右端元素
                      顯然lrange keyname 0 -1 會獲取所有元素
           刪除列表中指定元素:lrem keyname count value 刪除列中前count個值爲value的元素
                      count>0 從左邊還是刪除, count<0 從右邊開始刪除, count=0 刪除所有值爲value的元素
           獲取指定元素的索引值:lindex keyname index
           設置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 刪除指定範圍之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      從左往右尋找值爲pivot的元素,在它的前面或者後面插入value值

(4)集合類型常用命令:
           集合中的元素無序不重複
           增加元素:sadd keyname value1 value2
           刪除元素:srem keyname value1 value2
           獲取集合中的所有元素:smembers keyname
           判斷元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           兩個集合的差集:sdiff key1 key2 返回屬於key1但是不屬於key2的元素
           兩個集合的交集:sinter key1 key2
           兩個集合的並集:sunion key1 key2
           獲取集合中元素個數:scard key

(5)有序集合類型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           獲取元素的分數:zscore key member1
           獲取排名在某個範圍內的元素列表:zrange key startindex stopindex 只返回members並按照從小到大的順序排序
                      zrange key startindex stopindex withscores 返回members和scores
           獲取指定分數範圍內的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           獲取指定分數範圍內元素的個數:zcount keyname min max
           增加某個元素的分數:zincrby key 5(加5)/-5(減5) member 給指定的member元素添加score,返回的時增加後的結果分數
                      如果指定元素不存在,redis會先創建並賦值爲0再執行
           獲取集合中元素個數:zcard keyname 返回元素的個數
           刪除一個或多個元素:zrem keyname member1 member2 返回成功刪除的個數
           按照分數範圍刪除元素:zremrangebyscore keyname min max
           獲取某個元素的排名:zrank keyname member* 匹配任意個(包括0個)
(1)字符串類型常用命令:
           創建key:set keyname keyvalue
           獲取所用key:keys * (當key的數量多的時候會影響性能,生產環境不建議使用)
           判斷一個鍵是否存在:exists keyname 存在返回整數1,不存在返回整數0
           刪除鍵:delete keyname 返回刪除鍵的個數
           獲取鍵值:get keyname 當鍵不存在的時候返回空
           獲取鍵值的數據類型:type keyname 數據類型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使當前鍵值遞增加1:incr keyname 如果當前存儲的字符串是整數類型,使用該命令會遞增,並返回遞增後的值
                      如果key不存在,默認key值爲0,所以使用該命令後返回1
                      如果存儲的字符串不是整數類型,會報錯
                      incr 的所有redis命令均爲原子性操作,即命令執行的最小單位,執行過程中不會被其他命令插入
           使當前鍵值遞減減1: decr keyname
           使當前鍵遞增指定數值:incrby keyname 6
           使當前鍵遞減指定數值:decrby keyname 6
           增加指定浮點數: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引號,如:" a b "
           獲取字符串長度: strlen keyname 返回字符串長度,如果鍵不存在返回0
                       set name 你好,返回長度爲6,因爲漢字採用utf-編碼長度均爲3
           注意:reids對於鍵值的命名沒有明確要求,但是起名字最好通俗易懂,如:user_007_gender,用戶id爲007的性別

(2)散列類型常用命令:
           redis以字典形式存儲數據,而hash的鍵值也是以字典形式存儲
           hash賦值:hset keyname field value
                      hsetnx keyname field value
                      均不區分插入和更新操作,如果已經存在key field則更新並返回0,如果不存在key field增插入並返回1
                      二者的區別:hsetnx是原子操作,不用擔心競爭條件
           hash獲取值:hget keyname field
                      hmget keyname field1 field2
           hash獲取指定鍵值對應的所有值:hgetall keyname
           刪除字段:hdel keyname field1 field2
           使字段增加數值:hincrby keyname field 10
           獲取hash的所有鍵:hkeys keyname
           獲取hash的所有鍵值:hvals keyname
           獲取字段的數量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表類型常用命令:
           一個有序的字符串列表,操作是可以向列表兩端添加元素或者獲得列表中的某一片段,內部使用雙向鏈表實現
           向列表兩端插入元素:
                      向左邊插入:lpush keyname value1 value2 返回值爲增加元素後列表的長度
                      向右邊插入:rpush keyname value1 value2 返回值爲增加元素後列表的長度
           從列表兩端移除元素:
                      從左邊移除:lpop keyname
                      從右邊移除:rpop keyname
           獲取列表中元素個數:llen keyname
           獲取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是從0開始,爲閉區間含左含右
                      lrange命令支持負索引,表示從右邊開始計算序數,
                      如lrange keyname -2 -1 取的是倒數兩個元素
                      如果stop大於實際列表長度,會返回列表最右端元素
                      顯然lrange keyname 0 -1 會獲取所有元素
           刪除列表中指定元素:lrem keyname count value 刪除列中前count個值爲value的元素
                      count>0 從左邊還是刪除, count<0 從右邊開始刪除, count=0 刪除所有值爲value的元素
           獲取指定元素的索引值:lindex keyname index
           設置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 刪除指定範圍之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      從左往右尋找值爲pivot的元素,在它的前面或者後面插入value值

(4)集合類型常用命令:
           集合中的元素無序不重複
           增加元素:sadd keyname value1 value2
           刪除元素:srem keyname value1 value2
           獲取集合中的所有元素:smembers keyname
           判斷元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           兩個集合的差集:sdiff key1 key2 返回屬於key1但是不屬於key2的元素
           兩個集合的交集:sinter key1 key2
           兩個集合的並集:sunion key1 key2
           獲取集合中元素個數:scard key

(5)有序集合類型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           獲取元素的分數:zscore key member1
           獲取排名在某個範圍內的元素列表:zrange key startindex stopindex 只返回members並按照從小到大的順序排序
                      zrange key startindex stopindex withscores 返回members和scores
           獲取指定分數範圍內的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           獲取指定分數範圍內元素的個數:zcount keyname min max
           增加某個元素的分數:zincrby key 5(加5)/-5(減5) member 給指定的member元素添加score,返回的時增加後的結果分數
                      如果指定元素不存在,redis會先創建並賦值爲0再執行
           獲取集合中元素個數:zcard keyname 返回元素的個數
           刪除一個或多個元素:zrem keyname member1 member2 返回成功刪除的個數
           按照分數範圍刪除元素:zremrangebyscore keyname min max
           獲取某個元素的排名:zrank keyname member [] 匹配括號間的任意字符,可以使用"-“表示一個範圍,如:a[b-d] 則ab\ac\ad均可以
(1)字符串類型常用命令:
           創建key:set keyname keyvalue
           獲取所用key:keys * (當key的數量多的時候會影響性能,生產環境不建議使用)
           判斷一個鍵是否存在:exists keyname 存在返回整數1,不存在返回整數0
           刪除鍵:delete keyname 返回刪除鍵的個數
           獲取鍵值:get keyname 當鍵不存在的時候返回空
           獲取鍵值的數據類型:type keyname 數據類型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使當前鍵值遞增加1:incr keyname 如果當前存儲的字符串是整數類型,使用該命令會遞增,並返回遞增後的值
                      如果key不存在,默認key值爲0,所以使用該命令後返回1
                      如果存儲的字符串不是整數類型,會報錯
                      incr 的所有redis命令均爲原子性操作,即命令執行的最小單位,執行過程中不會被其他命令插入
           使當前鍵值遞減減1: decr keyname
           使當前鍵遞增指定數值:incrby keyname 6
           使當前鍵遞減指定數值:decrby keyname 6
           增加指定浮點數: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引號,如:” a b "
           獲取字符串長度: strlen keyname 返回字符串長度,如果鍵不存在返回0
                       set name 你好,返回長度爲6,因爲漢字採用utf-編碼長度均爲3
           注意:reids對於鍵值的命名沒有明確要求,但是起名字最好通俗易懂,如:user_007_gender,用戶id爲007的性別

(2)散列類型常用命令:
           redis以字典形式存儲數據,而hash的鍵值也是以字典形式存儲
           hash賦值:hset keyname field value
                      hsetnx keyname field value
                      均不區分插入和更新操作,如果已經存在key field則更新並返回0,如果不存在key field增插入並返回1
                      二者的區別:hsetnx是原子操作,不用擔心競爭條件
           hash獲取值:hget keyname field
                      hmget keyname field1 field2
           hash獲取指定鍵值對應的所有值:hgetall keyname
           刪除字段:hdel keyname field1 field2
           使字段增加數值:hincrby keyname field 10
           獲取hash的所有鍵:hkeys keyname
           獲取hash的所有鍵值:hvals keyname
           獲取字段的數量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表類型常用命令:
           一個有序的字符串列表,操作是可以向列表兩端添加元素或者獲得列表中的某一片段,內部使用雙向鏈表實現
           向列表兩端插入元素:
                      向左邊插入:lpush keyname value1 value2 返回值爲增加元素後列表的長度
                      向右邊插入:rpush keyname value1 value2 返回值爲增加元素後列表的長度
           從列表兩端移除元素:
                      從左邊移除:lpop keyname
                      從右邊移除:rpop keyname
           獲取列表中元素個數:llen keyname
           獲取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是從0開始,爲閉區間含左含右
                      lrange命令支持負索引,表示從右邊開始計算序數,
                      如lrange keyname -2 -1 取的是倒數兩個元素
                      如果stop大於實際列表長度,會返回列表最右端元素
                      顯然lrange keyname 0 -1 會獲取所有元素
           刪除列表中指定元素:lrem keyname count value 刪除列中前count個值爲value的元素
                      count>0 從左邊還是刪除, count<0 從右邊開始刪除, count=0 刪除所有值爲value的元素
           獲取指定元素的索引值:lindex keyname index
           設置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 刪除指定範圍之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      從左往右尋找值爲pivot的元素,在它的前面或者後面插入value值

(4)集合類型常用命令:
           集合中的元素無序不重複
           增加元素:sadd keyname value1 value2
           刪除元素:srem keyname value1 value2
           獲取集合中的所有元素:smembers keyname
           判斷元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           兩個集合的差集:sdiff key1 key2 返回屬於key1但是不屬於key2的元素
           兩個集合的交集:sinter key1 key2
           兩個集合的並集:sunion key1 key2
           獲取集合中元素個數:scard key

(5)有序集合類型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           獲取元素的分數:zscore key member1
           獲取排名在某個範圍內的元素列表:zrange key startindex stopindex 只返回members並按照從小到大的順序排序
                      zrange key startindex stopindex withscores 返回members和scores
           獲取指定分數範圍內的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           獲取指定分數範圍內元素的個數:zcount keyname min max
           增加某個元素的分數:zincrby key 5(加5)/-5(減5) member 給指定的member元素添加score,返回的時增加後的結果分數
                      如果指定元素不存在,redis會先創建並賦值爲0再執行
           獲取集合中元素個數:zcard keyname 返回元素的個數
           刪除一個或多個元素:zrem keyname member1 member2 返回成功刪除的個數
           按照分數範圍刪除元素:zremrangebyscore keyname min max
           獲取某個元素的排名:zrank keyname member\X 匹配字符X,用於轉義字符,如匹配?,可以用?

6、redis常用命令(redis命令不區分大小寫)
(1)字符串類型常用命令:
           創建key:set keyname keyvalue
           獲取所用key:keys * (當key的數量多的時候會影響性能,生產環境不建議使用)
           判斷一個鍵是否存在:exists keyname 存在返回整數1,不存在返回整數0
           刪除鍵:delete keyname 返回刪除鍵的個數
           獲取鍵值:get keyname 當鍵不存在的時候返回空
           獲取鍵值的數據類型:type keyname 數據類型有:string/hash/list(列表)/set(集合)/zset(有序集合)
           使當前鍵值遞增加1:incr keyname 如果當前存儲的字符串是整數類型,使用該命令會遞增,並返回遞增後的值
                      如果key不存在,默認key值爲0,所以使用該命令後返回1
                      如果存儲的字符串不是整數類型,會報錯
                      incr 的所有redis命令均爲原子性操作,即命令執行的最小單位,執行過程中不會被其他命令插入
           使當前鍵值遞減減1: decr keyname
           使當前鍵遞增指定數值:incrby keyname 6
           使當前鍵遞減指定數值:decrby keyname 6
           增加指定浮點數: incrbyfloat keyname 2.7
           向尾部追加值:append keyname value 如果要拼接空格使用引號,如:" a b "
           獲取字符串長度: strlen keyname 返回字符串長度,如果鍵不存在返回0
                       set name 你好,返回長度爲6,因爲漢字採用utf-編碼長度均爲3
           注意:reids對於鍵值的命名沒有明確要求,但是起名字最好通俗易懂,如:user_007_gender,用戶id爲007的性別

(2)散列類型常用命令:
           redis以字典形式存儲數據,而hash的鍵值也是以字典形式存儲
           hash賦值:hset keyname field value
                      hsetnx keyname field value
                      均不區分插入和更新操作,如果已經存在key field則更新並返回0,如果不存在key field增插入並返回1
                      二者的區別:hsetnx是原子操作,不用擔心競爭條件
           hash獲取值:hget keyname field
                      hmget keyname field1 field2
           hash獲取指定鍵值對應的所有值:hgetall keyname
           刪除字段:hdel keyname field1 field2
           使字段增加數值:hincrby keyname field 10
           獲取hash的所有鍵:hkeys keyname
           獲取hash的所有鍵值:hvals keyname
           獲取字段的數量:hlen keyname
           如:hset car name BM
                      hset car color write
                      hset car size big
                      hget car name
                      hkeys car ==> name\color\size
                      hvalues car ==> BM\write\big
                      hgetall car ==> name BM color write size big

(3)列表類型常用命令:
           一個有序的字符串列表,操作是可以向列表兩端添加元素或者獲得列表中的某一片段,內部使用雙向鏈表實現
           向列表兩端插入元素:
                      向左邊插入:lpush keyname value1 value2 返回值爲增加元素後列表的長度
                      向右邊插入:rpush keyname value1 value2 返回值爲增加元素後列表的長度
           從列表兩端移除元素:
                      從左邊移除:lpop keyname
                      從右邊移除:rpop keyname
           獲取列表中元素個數:llen keyname
           獲取列表中的指定片段:lrange keyname startindex stopindex
                      redis列表的索引是從0開始,爲閉區間含左含右
                      lrange命令支持負索引,表示從右邊開始計算序數,
                      如lrange keyname -2 -1 取的是倒數兩個元素
                      如果stop大於實際列表長度,會返回列表最右端元素
                      顯然lrange keyname 0 -1 會獲取所有元素
           刪除列表中指定元素:lrem keyname count value 刪除列中前count個值爲value的元素
                      count>0 從左邊還是刪除, count<0 從右邊開始刪除, count=0 刪除所有值爲value的元素
           獲取指定元素的索引值:lindex keyname index
           設置指定元素的索引值:lset keyname index value
           只保留指定元素片段:ltrim keyname start index 刪除指定範圍之外的所有元素
           向列表中插入元素:linsert keyname before/after pivot value
                      從左往右尋找值爲pivot的元素,在它的前面或者後面插入value值

(4)集合類型常用命令:
           集合中的元素無序不重複
           增加元素:sadd keyname value1 value2
           刪除元素:srem keyname value1 value2
           獲取集合中的所有元素:smembers keyname
           判斷元素是否在集合中:sismember keyname value 存在返回1,不存在返回0
           兩個集合的差集:sdiff key1 key2 返回屬於key1但是不屬於key2的元素
           兩個集合的交集:sinter key1 key2
           兩個集合的並集:sunion key1 key2
           獲取集合中元素個數:scard key

(5)有序集合類型常用命令:
           增加元素:zadd key score1 member1 score2 member2
           獲取元素的分數:zscore key member1
           獲取排名在某個範圍內的元素列表:zrange key startindex stopindex 只返回members並按照從小到大的順序排序
                      zrange key startindex stopindex withscores 返回members和scores
           獲取指定分數範圍內的元素:zrangebyscore key score1 score2
                      zrangebyscore key score1 score2 withscores
           獲取指定分數範圍內元素的個數:zcount keyname min max
           增加某個元素的分數:zincrby key 5(加5)/-5(減5) member 給指定的member元素添加score,返回的時增加後的結果分數
                      如果指定元素不存在,redis會先創建並賦值爲0再執行
           獲取集合中元素個數:zcard keyname 返回元素的個數
           刪除一個或多個元素:zrem keyname member1 member2 返回成功刪除的個數
           按照分數範圍刪除元素:zremrangebyscore keyname min max
           獲取某個元素的排名:zrank keyname member

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章