在接下來的一段時間里面我要將自己學習的redis整理一遍,下面是我整理的一些資料:
Redis是一款依據BSD開源協議發行的高性能Key-Value存儲系統(cache and store),所以redis是可以查看源代碼https://github.com/MSOpenTech/redis/tree/3.0 。
它是通常被稱為數據結構服務器,因為值(value)可以使字符串(string)、哈希(hashes)、列表(list)、集合(sets),和有序集合(sorted sets)類型。
在將redis類型以前我們先在自己的電腦上安裝一下redis,打開這個鏈接選擇2.8.2400這個版本,下載msi。msi是安裝版本,zip是免安裝版本。區別在於msi安裝版本安裝后可以以服務的形式存在。需要注意的是redis安裝包沒有32位系統的只有64位的

安裝到D盤中,如下

接下來再看看我們的服務有一個redis的服務,而且該服務已經啟動。

然后我就使用(redis-cli.exe)客戶端連接redis服務。連接redis服務器的命令為redis-cli.exe -h 127.0.0.1 -p 6379 -auth 密碼
先開打運行程序輸入“cmd”然后如下:

因為默認端口為6379所有可以不用-p 6379 ,同時剛安裝默認情況下沒有密碼,所以不需要密碼。
然后我在命令行輸入"echo "hello redis" ",如果返回"hello redis" 說明連接成功,這樣我們就完成了redis安裝,也知道如何連接redis服務。
下面開始簡單介紹字符串(string)、哈希(hashes)、列表(list)、集合(sets),和有序集合(sorted sets)類型。
字符串(string)
String類型是最常用的一種數據類型,普通的Key/value存儲都可以歸為此類。一個Key對應一個Value,String類型是二進制安全的。Redis的String可以包含任何數據,可以存放json數據,圖像數據等等。value存儲最大數據量為512M。
主要命令有
set key value #將字符串值value關聯到key
get key #返回key所關聯的字符串值
decr key #將key中儲存的數字值減一
incr key #將key中存儲的數字值加一
哈希(hashes)
redis hash是一個string類型的field和value的映射表。它的添加,刪除操作都是O(1)(平均)。hash特別適合用於存儲對象。
在上面服務器配置文件中包含
hash-max-zipmap-entries 64 #配置字段最多64個。
hash-max-zipmap-value 512 #配置value最大為512字節。
主要命令有
hset key field #將哈希表key中的域field的值設為value
hget key field #返回哈希表key中給定域field的值。
以及hdel、hgetall、hkeys、hvals等
列表(list)
redis的list類型其實就是一個每個子元素都是string類型的雙向鏈表。所以[lr]push和[lr]pop命令的算法時間復雜度都是O(1),另外list會記錄鏈表的長度。所以llen操作也是O(1).鏈表的最大長度是(2的32次方-1)。我們可以通過push,pop操作從鏈表的頭部或者尾部添加刪除元素。這使得list既可以用作棧,也可以用作隊列。
主要命令有
lset key index value #將列表key下標為index的元素的值設置為value。當然不可以直接使用
要先使用命令 lpush kye value #將一個或多個value插入到列表key的表頭
然后我們再lpush幾個值
lrange key start stop #返回列表key中指定區間內的元素,區間以偏移量start和stop指定。 lrange listkey 0 -1 表示顯示所有數據 lrange listkey 0 0 表示顯示第一個元素
以及llen、rpop、lpop等
集合(sets)
redis的set是string類型的無序集合。set元素最大可以包含(2的32次方-1)個元素。set的是通過hash table實現的,所以添加,刪除,查找的復雜度都是O(1)。
主要命令有
sadd key member #將一個或多個member元素加入到集合key當中,已經存在於集合的member元素將被忽略。
smembers key #返回集合key中的所有成員。
以及sdiff、sinter、sunion、scard等
有序集合(sorted sets)
和set一樣sorted set也是string類型元素的集合,不同的是每個元素都會關聯一個double類型的score。sorted set的實現是skip list和hash table的混合體當元素被添加到集合中時,一個元素到score的映射被添加到hash table中,所以給定一個元素獲取score的開銷是O(1),另一個score到元素的映射被添加到skip list並按照score排序,所以就可以有序的獲取集合中的元素。添加,刪除操作開銷都是O(log(N))和skip list的開銷一致,redis的skip list實現用的是雙向鏈表,這樣就可以逆序從尾部取元素。
主要命令有
zadd key score member #將一個或多個member元素及其score值加入到有序集key當中。
zrange key start stop [withscores] #返回有序集key中,指定區間內的成員。其中成員的位置按score值遞增(從小到大)來排序。還有一個可選分值
以及zcard、zcount、zrank、zrem、zscore等
以上是自己個人學習的記錄,如果有什么不對的地方請大家指正,歡迎評論!