Redis基礎知識彙總
1.什麼是Redis
Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value的非關係型數據庫,並提供多種語言的API。git
- Redis是遠程的
- Redis是基於內存的
- Redis是非關係型數據庫
2.Redis的安裝
2.1.Window安裝Redis
-
選擇須要版本下載安裝包github
-
解壓Redis安裝包,當前目錄打開cmd窗口,redis-server.exe redis.windows.conf 啓動Redisredis
redis-server.exe redis.windows.conf
-
若是須要Redis一直存在,執行 redis-server.exe --service-install redis.windows-service.conf 添加到服務列表shell
redis-server.exe --service-install redis.windows-service.conf
- 使用 redis-cli.exe -h localhost -p 6379 或者運行 redis-cli.exe 打開客戶端
2.2.Linux安裝Redis
- 選擇須要版本獲取源碼,wget http://download.redis.io/rele...
- 解壓文件包 tar xzf redis-5.0.2.tar.gz
- 進入解壓文件夾編譯源碼 cd redis-5.0.2,make
- make install 安裝
-
redis-cli 打開客戶端數據庫
wget http://download.redis.io/releases/redis-5.0.2.tar.gz
tar xzf redis-5.0.2.tar.gz
cd redis-5.0.2
make
make install
在 Window 下,配置文件爲 redis.windows.conf,在 Linux 下,配置文件是redis.conf,一下經常使用配置windows
- daemonize:配置Redis是否以守護進程的方式運行,默認no,使用yes啓用守護進程
- port:Reids佔用端口號,默認6379
- bind:綁定ip,Redis接受該ip的請求,默認127.0.0.1即本機,修改成0.0.0.0可接受全部
- timeout :客戶端鏈接超時時間
- databases:數據庫數量,默認16
3.Redis數據類型
Redis支持五種數據類型:String(字符串),Hash(哈希),List(列表),Set(集合)及zset(Sorted Set:有序集合)。網絡
- String:一個 key 對應一個 value,能夠是字符串、整數或浮點,統稱爲元素 ,支持對字符串字符處理操做,對整數類型加減
- Hash:key-valued的散列組,其中key是字符串,value是元素 ,支持按照key進行增長刪除
- List:一個有序(插入順序)序列集合 ,支持序列兩端推入、或彈出元素、增剪、查改或移除元素
- Set:無序的集合,各不相同的元素 ,可從集合中插入或刪除元素
- Sorted Set:帶分數的score-value有序集合,其中score爲浮點,value爲元素,以score排序,支持集合插入,按照分數範圍查找
4.Redis的經常使用操做命令
4.1.String類型操做命令
- set key value:添加key-value的數據,存在則更新
- get key:根據key獲取value
- incr key:對於數字型value,將key存儲的值加 1,即value = value + 1
- decr key:對於數字型value,將key存儲的值減 1,即value = value - 1
- incrby key num:對於數字型value,將key所存儲的值增長num,即value = value + num
- decrby key num:對於數字型value,將key所存儲的值減去num,即value = value - num
- append key str:將str字符串拼接到key所對應的val末尾,數字會轉化爲字符串,即value =value + str
- setnx key value:只有在key不存在的時候才添加,key存在則不作任何操做
- mget key [key2...]:一次獲取多個key的值
- msetkey value [key2 value2...]:一次添加多組key-value
- getset:添加key-value,並返回key以前所對應的值,不存在返回nil
- setex key seconds value:添加key-value,並設置超時時間爲second秒
- strlen key:返回key所對應value的長度
- del key:刪除存儲的key-value數據
4.2.Hash類型操做命令
- hset key field value: 存儲key-hash[field-value],存在則更新
- hmset key field value [field2 value2...]:存儲多組key-hash
- hsetnx key field value:僅當field不存在是,在哈希表key下添加field-value,不然不作任何操做
- hget key field:獲取哈希表key中字段field的值
- hget key field [field2...]:獲取哈希表key中多個字段field,field...的值
- hgetall key:獲取哈希表key中全部字段field及其值value的集合
- hvals key:獲取哈希表key中全部值value的集合
- hlen key:獲取哈希表key中存儲字段的數量
- hkeys key:獲取哈希表key中全部字段field的集合
- hdel key field [field2...]:刪除哈希表key中字段field,field1...
- hexitst key field:查看哈希表key中field字段是否存在,存在返回1,不存在返回0
4.3.List類型操做命令
4.4.Set類型操做命令
- sdd key member [member2...]:向集合key添加一個或多個成員,不重複添加
- scard key:獲取集合key的成員數量
- sinter key [key2...]:返回給定集合key,key2...的交集
- sismember key member:判斷member是否在集合key中存在,存在返回1,不存在返回0
- smembers key:返回集合key中的全部成員
- srandmember key [count]:隨即返回集合key中一個或count個成員
- srem key member [member2...]:刪除集合key中member,member2...
4.5.zset類型操做命令
- zadd key score member [score2 member2....]:向集合key中添加一個或者多個分數爲score的成員,存在則更新分數
- zcard key:獲取有序集合key中成員的數量
- zcount key min max:獲取有序集合key中分數在[min,max]區間內成員的數量
- zincrby key increment member:將有序集合key中成員member的分數增長increment,即score = score + increment
- zrange key start stop [withscores]:獲取有序集合key索引區間[start, stop]的成員,索引0開始,stop爲-1則一直獲取到集合最後一個成員,withscores參數表示帶上分數
- zrank key member:返回有序集合key中指定成員member的索引
- zrem key member [member2....]:移除有序集合key中的一個或多個成員
- zrevrange key start stop [withscores]:反序返回有序集key中索引區間[start, stop](反序後的索引)的成員,索引0開始,stop爲-1則一直獲取到集合最後一個成員,withscores參數表示帶上分數
- zscore key member:獲取有序集合key中成員member的分數