一、redis 簡介
1、什么是 redis?
redis 是一個開源免費的高性能的 key - value 資料庫,
支持資料持久化,即可以將記憶體的資料存盤在磁盤中,重啟服務后可以再次加載磁盤中的資料并使用,
支持多種型別,比如:String(字串)、List(串列)、Set(集合)、zset(有序集合)、Hash(散列) 等,
支持資料備份,主從模式的資料備份(master - slave),
redis 所有操作都是原子性的,即要么成功執行,要么不執行,
官網:
https://redis.io/
2、安裝 redis
(1)使用 docker 安裝、使用 redis
【參考地址:(Linux(CentOS7) 上安裝 docker)】 https://www.cnblogs.com/l-y-h/p/12622730.html#_label0 【參考地址:(ocker 安裝 Redis)】 https://www.cnblogs.com/l-y-h/p/12622730.html#_label6
(2)Centos7 編譯安裝 redis 5.0.8
Step1:下載 redis 包,
【官網下載地址:】 https://redis.io/download http://download.redis.io/releases/redis-5.0.8.tar.gz 【在 Linux 內部直接下載:】 [root@localhost local]# wget http://download.redis.io/releases/redis-5.0.8.tar.gz
Step2:解壓、編譯,
【解壓:】 [root@localhost local]# tar -zxvf redis-5.0.8.tar.gz 【進入解壓后的目錄,并編譯(前提 系統內部已經安裝了 gcc、make 等程式):】 [root@localhost local]# cd redis-5.0.8/ [root@localhost local]# make 【編譯完后:進入 src 目錄,可以看到 redis-server、redis-cli 等程式】 [root@localhost redis-5.0.8]# cd src/

Step3:開啟服務程式(redis-server),并使用內置客戶端( redis-cli) 進行互動,
【開啟服務程式(redis-server):】 方式一: ./redis-server 根據默認組態檔啟動 redis 方式二: ./redis-server ../redis.conf 根據指定的組態檔(可以自定義組態檔位置)啟動 redis 【開啟客戶端進行互動(redis-cli):】 ./redis-cli
通過 xShell 使用一個連接以前臺模式啟動一個 redis 服務,

另開一個 xShell 連接,執行 redis-cli,在安裝包的 src 目錄下 執行 ./redis-cli,

Step4:關閉服務
【在 redis-cli 中輸入指令】
[root@localhost src]# ./redis-cli shutdown

3、redis 可視化工具下載
(1)官網下載(要收費的)
地址:https://redisdesktop.com/pricing

(2)破解版下載(白嫖)
鏈接:https://pan.baidu.com/s/1v3ZJEdzEGBIf5gYGsyhRBw
提取碼:ubhz
或者
http://www.downza.cn/soft/210734.html



二、redis 中 鍵(key) 相關命令
命令不區分大小寫,但資料區分大小寫,
1、keys(用于查看 key 串列)
【格式:】 keys pattern 用于查找 匹配 pattern 格式的 key 【舉例:】 127.0.0.1:6379> keys *

2、del(用于洗掉某個鍵)
【格式:】 del key 當 key 存在時,洗掉 key,回傳 1,key 不存在時,忽略,回傳 0, 【舉例:】 127.0.0.1:6379> del a

3、exists(判斷某個鍵是否存在)
【格式:】 exists key 用于判斷某個 key 是否存在,存在回傳 1,不存在回傳 0 【舉例:】 127.0.0.1:6379> exists b

4、type(回傳指定 key 存盤值的型別)
【格式:】 type key 用于判斷某個 key 的型別 【舉例:】 127.0.0.1:6379> type c

5、rename、renamenx(用于給 key 修改名字)
【rename 格式:】 rename old_key_name new_key_name 用于修改 key 名, 注: 若 old_key_name 不存在時,會回傳一個錯誤, 若 new_key_name 存在時,則覆寫舊值,回傳 OK, 【renamenx 格式:】 renamenx old_key_name new_key_name 用于修改 key 名 注: 若 old_key_name 不存在時,會回傳一個錯誤, 若 new_key_name 存在時,則不會修改,回傳 0, 【舉例:】 127.0.0.1:6379> rename a e 127.0.0.1:6379> renamenx a e


6、randomkey(隨機回傳當前庫的一個 key)
【格式:】 randomkey 隨機回傳當前庫中的 一個 key,若當前庫沒有資料,則回傳 null, 【舉例:】 127.0.0.1:6379> randomkey

三、redis 資料型別 -- String 以及常用命令
1、String(字串)
最基本的 型別,一個 key 對應 一個 value,
是二進制安全的,可以存盤任何資料(比如圖片),存盤最大值為 512 MB,
2、set(給指定 key 設定一個 String 型別的 value,無視型別直接覆寫)
【格式:】 set key value 給 key 設定一個 value 值, 【舉例:】 127.0.0.1:6379> set b world

3、get(獲取指定 key 的 value 值)
【格式:】 get key 用于回傳 key 的值, 注: 若 key 不存在,則回傳 null, 若 key 存盤的不是 string 型資料,則回傳一個錯誤 【舉例:】 127.0.0.1:6379> get b

4、getrange(截取 key 存盤的 value 的指定位置的字串)
【格式:】 getrange key start end 截取字串,包括 start、end(從 0 開始計數), 【舉例:】 127.0.0.1:6379> getrange a 0 -1 127.0.0.1:6379> getrange a 3 7

5、getset(設定指定 key 的 value 值)
【格式:】 getset key value 設定指定 key 的 value 值 注: 當 key 不存在時,回傳 null 當 key 的 value 不是 string 型時,回傳 一個錯誤(與 set 有區別), 【舉例:】 127.0.0.1:6379> getset a world

6、mget(一次獲取多個 key 的 value 值)
【格式:】 mget key1 [key2] 一次獲取多個 key 的值 注: 若 key 的 value 不屬于 string,會回傳 null, 若 key 不存在,回傳 null, 【舉例:】 127.0.0.1:6379> mget a b

7、mset、msetnx(一次設定多個 key - value 鍵值對)
【mset 格式:】 mset key1 value1 [key2 value2] 一次設定多個 key - value 鍵值對 【msetnx 格式:】 msetnx key1 value1 [key2 value2] 一次設定多個 key - value 鍵值對 注: key 不存在時才能成功設定, 【舉例:】 127.0.0.1:6379> mset a hello b world 127.0.0.1:6379> msetnx c java d python

8、setnx(當 key 不存在時,設定值)
【格式:】 setnx key value 添加一個 從不存在的 key - value 鍵值對 注: 若 key 存在,則不會設定 value 值,回傳 0. 若 key 不存在,則設定 value 值,回傳 1.

9、append(給指定 key 的 value 追加字串)
【格式:】 append key value 給指定 key 追加字串 注: 若 key 不存在,則等同于 set key value. 若 key 存在,則 向其 value 末尾 追加 字串, 【舉例:】 127.0.0.1:6379> append a world

10、incr、incrby、decr、decrby(增加、減少 數值型別的 value 值)
【格式:】 incr key 給 key 的 value 加 1 incrby key value 給 key 的 value 加 指定的 value decr key 給 key 的 value 減 1 decrby key value 給 key 的 value 減 指定的 value 注: value 的值必須是能轉為 數值 型的字串才可以成功執行 【舉例:】 127.0.0.1:6379> incr b 127.0.0.1:6379> decr b 127.0.0.1:6379> incrby b 20 127.0.0.1:6379> decrby b 10

11、strlen(獲取指定 key 的 value 字串的長度)
【格式:】 strlen key 獲取 指定 key 的 value 存盤的 字串的長度 【舉例:】 127.0.0.1:6379> strlen a

四、redis 資料型別 -- Hash 以及常用命令
1、Hash(散列、哈希)
是一個 string 型別 key(指哈希表名) 的 field - value 集合,適合用于存盤物件,
可以存盤 2^32 -1 個 key - value 鍵值對,
2、hkeys(獲取指定哈希表 key 的 所有的欄位 field)
【格式:】 hkeys key 用于獲取指定 key 的所有 field, 注: 若 key 不存在,則提示一個空串列資訊, 【舉例:】 127.0.0.1:6379> hkeys test

3、hset(給 哈希表中的 欄位 賦值)
【格式:】 hset key field value 給 key 這個哈希表的 field 欄位 賦值 為 value, 注: 若 key 不存在,則會創建, 若 field 重復,則新值會覆寫舊值, 【舉例:】 127.0.0.1:6379> hset test a helloworld

4、hmset(同時設定 多個 field - value 到指定的 key 中)
【格式:】 hmset key field1 value1 [field2 value2] 同時設定多個 field - value 對到 哈希表 key 中 注: 若 field 重復,則新值覆寫舊值, 【舉例:】 127.0.0.1:6379> hmset test a hello d world

5、hget、hmget、hgetall(獲取哈希表 key 的 field - value值)
【hget 格式:】 hget key field 用于回傳 指定哈希表 key 中指定 欄位 field 的 value 值 【hmget 格式:】 hmget key field1 [field2] 用于一次回傳一個或多個 field 的 value 值 【hgetall 格式:】 hgetall key 回傳指定 key 下所有 的 field -value 【舉例:】 127.0.0.1:6379> hget test a 127.0.0.1:6379> hmget test a b c e 127.0.0.1:6379> hgetall test

6、hvals(獲取指定 key 下所有的 field 對應的 value)
【格式:】 hvals key 回傳指定 key 下所有的 field 對應的 value 值 【舉例:】 127.0.0.1:6379> hvals test

7、hlen(獲取指定 key 中 field 的數量)
【格式:】 hlen key 獲取 指定 哈希表 key 中 field 的總數 【舉例:】 127.0.0.1:6379> hlen test

8、hdel (洗掉指定 key 中一個或多個 field)
【格式:】 hdel key field1 [field2] 洗掉指定哈希表 key 中 指定的 field 欄位 【舉例:】 127.0.0.1:6379> hdel test a

9、hexists(判斷指定 key 中是否存在 field)
【格式:】 hexists key field 判斷指定哈希表 key 中是否存在 field,不存在回傳 0,存在回傳 1, 【舉例:】 127.0.0.1:6379> hexists test a

五、redis 資料型別 -- List 以及常用命令
1、List(串列)
是字串 的串列,按照插入順序排序,一個 key 對應 多個 value,
可以存盤 2^32 - 1 個 value 元素,
2、lpush、lpushx(將一個或多個值插入串列的頭部)
【lpush 格式:】 lpush key value1 [value2] 注: 將 value 插入 串列的頭部,若 key 不存在,則創建一個 key 【lpushx 格式:】 lpush key value1 [value2] 注: 將 value 插入 串列的頭部,若 key 不存在,則添加失效,并回傳一個 空串列資訊, 【舉例:】 127.0.0.1:6379> lpush test 1 2 127.0.0.1:6379> lpushx test 3 4

3、rpush、rpushx(將一個或多個值插入串列的尾部)
【rpush 格式:】 rpush key value1 [value2] 注: 將 value 插入 串列的頭部,若 key 不存在,則創建一個 key 【rpushx 格式:】 rpush key value1 [value2] 注: 將 value 插入 串列的頭部,若 key 不存在,則添加失效,并回傳一個 空串列資訊, 【舉例:】 127.0.0.1:6379> rpush test 1 2 127.0.0.1:6379> rpushx test 3 4

4、lrange(回傳指定范圍的 list 串列)
【格式:】 lrange key start end 注: 回傳指定范圍 內的 list 串列,其中 -1 表示倒數第一個數,0 表示第一個數 【舉例:】 127.0.0.1:6379> lrange test 0 -1 127.0.0.1:6379> lrange test -3 3

5、llen(獲取串列的長度)
【格式:】 llen key 注: 回傳一個串列的長度,若 key 不存在,則回傳 0 , 【舉例:】 127.0.0.1:6379> llen test

6、lindex(用于獲取串列中指定下標的元素)
【格式:】 lindex key index 注: 回傳 list 中指定下標 index 的元素,其中 -1 表示倒數第一個數,0 表示第一個數 【舉例:】 127.0.0.1:6379> lindex test 0 127.0.0.1:6379> lindex test -1

7、lpop(從串列頭部移除第一個元素)
【格式:】 lpop key 從 key 頭部移除第一個元素,key不存在時回傳 null 【舉例:】 127.0.0.1:6379> lpop test

8、rpop(從串列的尾部移除最后一個元素)
【格式:】 rpop key 從 key 尾部移除最后一個元素,key不存在時回傳 null 【舉例:】 127.0.0.1:6379> rpop test

9、lset(通過 串列的下標去設定 元素值)
【格式:】 lset key index value 注: 設定 list 中指定下標 index 的元素,其中 -1 表示倒數第一個數,0 表示第一個數 【舉例:】 127.0.0.1:6379> lset test 0 hello

10、ltrim(截取串列中指定范圍的元素)
【格式:】 ltrim key start end 注: 截取串列中指定范圍的元素,不在范圍的元素會洗掉,其中 -1 表示倒數第一個數,0 表示第一個數 【舉例:】 127.0.0.1:6379> ltrim test 1 3

六、redis 資料型別 -- Set 以及常用命令
1、Set(集合)
是字串 的無序集合,元素不重復且無序,
一個 key 對應 多個 value,可以存盤 2^32 -1 個 value 元素,
2、sadd(添加一個或多個元素到集合中)
【格式:】 sadd key value1 [value2] 注: 添加一個或多個元素到集合key 中,重復元素不會被添加, 【舉例:】 127.0.0.1:6379> sadd test 1 2 3 1 2

3、smembers(用于回傳集合的所有元素)
【格式:】 smembers key 注: 回傳指定集合 key 的所有元素,若 key 不存在,回傳 (empty list or set) 【舉例:】 127.0.0.1:6379> smembers test

4、scard(用于回傳當前集合中元素的個數)
【格式:】 scard key 注: 回傳指定 key 的元素的個數, 【舉例:】 127.0.0.1:6379> scard test

5、sismember(判斷集合中是否包含某元素)
【格式:】 sismember key value 注: 判斷集合 key 中是否存在 某元素 value 【舉例:】 127.0.0.1:6379> sismember test 4

6、srem(移除一個或多個元素)
【格式:】 srem key value1 [value2] 注: 移除一個或多個元素,根據值來匹配, 【舉例:】 127.0.0.1:6379> srem test 2 3 4

7、spop(隨機移除一個或多個元素)
【格式:】 spop key [count] 注: count 表示 移除的元素個數,默認為 1,若 key 不存在,回傳 null, 【舉例:】 127.0.0.1:6379> spop test 6 127.0.0.1:6379> spop test

8、srandmember(隨機回傳一個或多個元素)
【格式:】 srandmember key [count] 【舉例:】 127.0.0.1:6379> srandmember test 4

9、smove(將指定元素從一個集合移動到另一個集合)
【格式:】 smove source destination member 注: 將 member 元素 從 source 集合 移動到 destination 集合中, 【舉例:】 127.0.0.1:6379> smove test test1 4

七、redis 資料型別 -- zSet 以及常用命令
1、zset(有序集合)
是字串 的有序集合,元素不重復且有序,
內部維護一個 double 型別的分數,根據該值對元素進行排序,double 值可以重復,
一個 key 對應 多個 value,可以存盤 2^32 - 1 個 value 元素,
2、zadd(添加一個或多個元素到集合中)
【格式:】 zadd key score1 value1 [score2 value2] 注; score 為指定的整數或分數,用來排序, 添加一個或多個元素到集合中,若已存在元素,則會覆寫舊的 score, 【舉例:】 127.0.0.1:6379> zadd test 2 hello 1 world 3 helloworld

3、zrange、zrevrange(回傳指定范圍的集合元素)
【zrange 格式:】 zrange key start end [withscores] 注: 按照元素的 score 增序排列, withscores 表示顯示 元素的 score, 其中 -1 表示倒數第一個數,0 表示第一個數, 【zrevrange 格式:】 zrevrange key start end [withscores] 注: 按照元素的 score 降序排列, 【舉例:】 127.0.0.1:6379> zrange test 0 -1 127.0.0.1:6379> zrange test 0 -1 withscores


4、zcard、zcount(獲取集合中元素的個數)
【zcard 格式:】 zcard key 注: 獲取指定 key 的所有元素的個數 【zcount 格式:】 zcount key min max 注: 獲取指定 key 的 指定 分數范圍內的元素的個數, 【舉例:】 127.0.0.1:6379> zcard test 127.0.0.1:6379> zcount test 1.5 4.6

5、zscore(回傳指定元素的 score 分數值)
【格式:】 zscore key member 注: 回傳指定 member 在 指定 key 中的 score. 【舉例:】 127.0.0.1:6379> zscore test hello

6、zrem(移除一個或多個元素)
【格式:】 zrem key member1 [member2] 注: 從集合中移除 一個 或 多個 member, 【舉例:】 127.0.0.1:6379> zrem test world hello

7、zrank、zrevrank(獲取指定元素在集合中的排名)
【zrank 格式:】 zrank key member 注: 按照 score 升序排列,并回傳 member 在此序列中的排名, 其中,0 表示第一名,依次遞增, 【zrevrank 格式:】 zrevrank key member 注: 按照 score 降序排列,并回傳 member 在此序列中的排名, 【舉例:】 127.0.0.1:6379> zrank test java 127.0.0.1:6379> zrevrank test java

8、zremrangebyrank、zremrangebyscore(按照指定的范圍移除元素)
【zremrangebyrank 格式:】 zremrangebyrank key start end 注: 按照 排名,移除 [start, end] 區間內的元素, 【zremrangebyscore 格式:】 zremrangebyscore key min max 注: 按照 分數值,移除 [min, max] 區間內的元素 【舉例:】 127.0.0.1:6379> zremrangebyrank test1 2 3 127.0.0.1:6379> zremrangebyscore test2 2 100

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/8771.html
標籤:NoSQL
上一篇:求一簡單分類計算sql陳述句
