redis入門指南一書總結上(windows下安裝+redis數據類型彙總)

redis安裝(windows)

該書中介紹的是使用cygwin軟件進行安裝,這裏可以直接到github上面去下載,傳送門,點擊下圖即可,可能網絡會有點慢,畢竟外網。下載完成後解壓得到的文件結構應該是下面這樣的

這裏寫圖片描述
這裏寫圖片描述

在每次使用redis前需要啓動redis服務,進入下載的redis目錄的命令行,輸入命令redis-server.exe redis.windows.conf即可運行redis服務器
再啓動了redis服務器之後,就可以創建redis客戶端使用了,創建redis客戶端:打開一個新的命令行窗口,輸入命令redis-cli -h host -p port -a password,host、port、password分別表示服務器地址、端口號和密碼。創建成功之後,就可以開始redis的使用了
redis默認是沒有密碼的,如果想要設置密碼,可以打開目錄下的redis.windows.conf和redis.windows-server.conf文件,同時找到裏面的requirepass並修改後面的值爲你想要設置的密碼並設置可用(刪除前面的#號即可)


redis入門

熱身–鍵值常用命令
KEYS pattern:獲得符合指定通配符規則pattern的鍵名列表,通配符規則包括如下:
符號 含義
匹配一個字符
* 匹配多個字符
[] 匹配括號裏面的任一個字符,可以使用-表示一個範圍,
/x 匹配字符x,其中的/用於轉義符號
EXISTS key:判斷指定鍵是否存在
DEL key:刪除指定鍵
TYPE key:獲得指定鍵的值的數據類型
redis數據類型–字符串類型
字符串是redis中最基本的數據類型,它能存儲任何形式的字符串,包括二進制數據,比如json化的對象或者是一張圖片。一個字符串類型鍵允許存儲的數據的最大容量是512MB
字符串類型數據的賦值和取值命令:
//賦值
redis> SET key value
//取值  其中當鍵不存在時返回空結果(nil)
redis> GET key
也可以使用下面的命令來一次性獲得/設置多個鍵值
//一次性設置多個鍵值
redis> MSET key1 value1 key2 value2...

//一次性獲得多個鍵值
redis> MGET key1 key2 key3...
字符串類型可以存儲任何形式的字符串,當存儲的字符串是整數形式時,可以使用自增命令讓其鍵值進行自增,有三種命令形式:
//讓整數形式的鍵進行自增1
//如果進行自增的鍵存儲的不是整數形式,就會報錯(浮點數形式都不行)
redis> INCR key

//讓整數形式的鍵自增指定值
redis> INCRBY key increment

//讓浮點數形式的鍵自增指定值
redis> INCRBYFLOAT key increment
同樣,想讓整數形式的值進行自減也可以使用命令,有兩種命令形式:
//讓整數形式的值自減1
redis> DECR key

//讓整數形式的值自減指定值
redis> DECRBY key decrement
不管是自增還是自減,其命令執行成功後的返回值都是自增或者自減後的key鍵值
通過命令redis> APPEND key value可以向key鍵值尾部追加內容values組成新的字符串
通過命令redis> STRLEN key可以獲得key鍵值字符串的長度
redis數據類型–散列類型
redis中的散列類型的鍵值是一種字典結構,它存儲了字段和字段值的映射,但是字段值只能是字符串類型,一個散列類型鍵最多可以包含2^32-1個字段
散列類型的鍵值的設置和獲取的命令格式如下:
//設置散列類型鍵值
redis> HSET obj key value

//獲取散列類型指定鍵值的字段值
redis> HGET obj key

//想要一次性賦值多個字段
redis> HMSET obj key1 value1 key2 value2...

//想要一次性獲取多個字段值
redis> HMGET obj key1 key2 ....

//想要一次性獲得指定鍵值的所有字段和字段值
//將會以字段、字段值的順序依次逐行打印
redis> HGETALL obj

//只想要一次性獲取指定鍵值的所有字段
redis> HKEYS obj

//只想要一次性獲取指定鍵值的所有字段值
redis> HVALS obj
個人看法:可以將redis中的散列類型鍵值看成是一個對象,其中的字段和字段值可以看成是對象的屬性和屬性值。形如命令redis> HSET obj key value可以看成是java中的對象:obj.key=value;
散列類型主要的幾個工具命令如下:
//判斷字段是否存在
redis> HEXISTS obj key

//當字段不存在時賦值,如果字段以存在則不進行任何操作
redis> HSETNX obj key value

//讓整數類型的字段自增指定值
redis> HINCRBY obj key increment

//刪除指定鍵值對應的字段,可以刪除多個字段
redis> HDEL obj key1 key2...

//獲取指定鍵值對應的字段數量
redis> HLEN obj
redis數據類型–列表類型
redis中的列表類型可以存儲一個有序的字符串列表,redis中的列表類型數據可以看成是一個雙端隊列,可以向隊列的兩端添加元素。在redis內部的列表類型是使用雙向鏈表實現的,所以向兩端添加元素的時間複雜度爲O(1),獲取越接近兩端的元素速度越快。與散列類型一樣,一個列表類型的鍵最多能容納2^32-1個元素
使用列表類型保存值好處在於:可以快速的獲取最新或者最久遠的數據,通常可用於獲取最近更新的數據等。不過它的缺點在於:畢竟是使用鏈表來實現的,所以想要獲取精確位置的元素速度還是比較慢的
向列表類型中添加/獲取元素的命令主要有如下幾個:
//向列表左端添加元素
//可以一次性添加多個元素
redis> LPUSH key val1 val2

//向列表右端添加元素
redis> RPUSH key val1 val2

//從列表左端彈出一個元素
redis> LPOP key

//從列表右端彈出一個元素
redis> RPOP key

//只獲取指定位置的值而不彈出該元素
//可以使用該命令將列表當成數組來使用
//如果index爲負數,則從右端-1開始計算
redis> LINDEX key index
列表類型的幾個常用的工具命令如下:
//獲取列表中元素的個數
redis> LLEN key

//獲取列表的元素片段[start,stop]
//如果爲正數,則從左端以0開始
//如果爲負數,則從右端以-1開始
redis> LRANGE key start stop

//刪除key列表中指定的值value的元素個數count
//如果count大於0,則表示從左端開始刪除count個值爲value的元素
//如果count小於0,則表示從右端開始刪除-count個值爲value的元素
//如果count等於0,則表示刪除所有值爲value的元素
redis> LREM key count value

//刪除指定片段[start,stop]以外的所有列表值
//該命令可以用來實現:保留最新的十條新聞,每次進行LTRIM 0,10
redis> LTRIM key start stop

//想列表中的指定元素value1插入指定值value2
//通過before、after指定插入之前還是之後
redis> LINSERT key after/before value1 value2

//將列表source右端的元素彈出並轉到列表dest的左端
redis> RPOPLPUSH source dest
redis數據類型–集合類型
redis中的集合類型主要是java中Set集合,裏面的元素的值是無序的並且不能重複。redis集合類型內部主要是通過值爲空的散列類型實現的,一個集合類型鍵可以存儲最多2^32-1個字符串
無序集合類型主要的設置元素的命令如下:
//向集合中添加一個或者多個元素
redis> SADD key val1 val2...

//刪除集合中的一個或者多個元素值(返回刪除的元素個數)
redis> SREM key val1 val2...

//獲取集合中的所有元素
//元素值是無序隨機排列的
redis> SMEMBERS key 

//判斷元素是否在指定集合中
redis> SISMEMBER key value

//獲取集合中的元素個數
redis> SCARD key

//從集合中隨機彈出一個元素
redis> SPOP key

//隨機獲得集合中的count個值
//如果count大於0,則會隨機獲取不重複的count個元素,如果大於集合元素個數,則會返回全部元素
//如果count小於0,則會隨機獲取可能重複的count個元素
redis> SRANDMENBER key count
redis集合類型還提供了一系列集合間的操作方法,比如交集、並集、差集等。主要命令如下:
//執行多個集合間的差集運算,形如:key1-key2-...
//表示只存在與key1集合中的元素列表
redis> SDIFF key1 key2...

//執行交集運算,表示多個集合共有的元素列表
redis> SINSERT key1 key2...

//執行並集運算
redis> SUNION key1 key2...
上面的三個集合間的運算結果都會直接輸出返回,如果想要保存可以使用如下三個對應的命令:
//將結果存儲於dest集合中

//差集
redis> SDIFFSTORE dest key1 key2...

//交集
redis> SINSERTSTORE dest key1 key2...

//並集
redis> SUNIONSTORE dest key1 key2...
redis數據類型–有序集合類型
有序集合類型相對於前面的集合類型來說的區別就在於它是有順序的,類似於java中的普通Set和SortSet的區別
有序集合類型相對於前面的列表類型來說的區別就類似於數組和鏈表的區別
redis中的有序集合類型是使用散列表和跳錶實現的,所以訪問元素的速度爲O(n)
有序集合類型的元素的值的順序是通過分數來確定的,所以設置元素的值需要額外設置它的分數。有序集合類型設置元素的常用命令如下:
//想集合key增加元素並設置他的分數和值,如果value已存在則替換分數
redis> ZADD key score value 

//獲得元素的分數
redis> ZSCORE key member

//按照分數從小到大的順序返回[start,stop]的所有元素值
//其中添加withscores可以指定顯示對應的分數
redis> ZRANGE key start stop [WITHSCORES]

//按照分數從大到小的順序返回[start,stop]的所有元素值
redis> ZREVRANGE key start stop [WITHSCORES]

//獲取指定分數範圍內的元素,可以指定分頁顯示多少數據
//如果想要不包含開頭元素或結尾元素值,可以使用(start或者(stop
//即添加一個(
redis> ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

//增加某個元素value的分數,增值爲increment,也可以爲負數,表示減值
redis> ZINCRBY  key increment value

//獲得集合中的元素數量
redis> ZCARD key

//獲得指定分數範圍內的元素數量
redis> ZCOUNT key min max

//刪除一個或者多個元素
redis> ZREM key val1 val2...

//刪除按照分數從小到大排序後的[start,stop]範圍的元素
redis> ZREMRANGEBYRANK key start stop

//刪除指定分數範圍內的元素
redis> ZREMRANGBYSCORE key min max

//獲得指定元素value在key集合中的排名(按照分數從小到大的順序)
redis> ZRANK key value

//獲得指定元素value在key集合中的排名(按照分數從大到小的順序)
redis> ZREVRANK key value


發佈了207 篇原創文章 · 獲贊 75 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章