1、string list hash結構中,每個至少完成5個命令,包含插入 修改 刪除 查詢,list 和hash還需要增加遍歷的操作命令
1、?Keys相關的命令操作:
(1)?查看key是否存在:
EXISTS name???#判斷該鍵是否存在,存在返回1,否則返回0。
#該鍵并不存在,因此append命令返回當前Value的長度
(2) 添加鍵:
append name 'tom'
、
#該鍵已經存在,因此返回追加后Value的長度。
(3)?查看key的超時時間:、
ttl name
-1? 表示沒有設置超時時間
(4)?遍歷key:
scan 0?
127.0.0.1:6379> scan 0??# 使用 0 作為游標,開始新的迭代
1) "0"? ? ?# 第一次迭代時返回的游標
2) 1) "name"
(5)?返回key的值的序列化:
Redis DUMP 命令用于序列化給定 key ,并返回被序列化的值。
2、?string類型數據的命令操作:
(1)?設置鍵值:
#設置Key的值為20
Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重復的數據。
Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。
集合中最大的成員數為 232?- 1 (4294967295, 每個集合可存儲40多億個成員)。
(2)?讀取鍵值:
Redis Get 命令用于獲取指定 key 的值。如果 key 不存在,返回 nil 。如果key 儲存的值不是字符串類型,返回一個錯誤。
(3)?數值類型自增1:
Redis Incr 命令將 key 中儲存的數字值增一。
如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 INCR 操作。
如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。
語法
redis Incr 命令基本語法如下:
redis 127.0.0.1:6379> INCR KEY_NAME
(4)?數值類型自減1:
Redis Decr 命令將 key 中儲存的數字值減一。
如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 DECR 操作。
如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。
語法
redis Decr 命令基本語法如下:
redis 127.0.0.1:6379> DECR KEY_NAME
(5)?查看值的長度:
Redis Strlen 命令用于獲取指定 key 所儲存的字符串值的長度。當 key 儲存的不是字符串值時,返回一個錯誤。
語法
redis Strlen 命令基本語法如下:
redis 127.0.0.1:6379> STRLEN KEY_NAME
3、?list類型數據的命令操作:
(1)對列表city插入元素:?beijing hangzhou ?shanghai
lpush city beijing hangzhou ?shanghai
Redis Lpush 命令將一個或多個值插入到列表頭部。 如果 key 不存在,一個空列表會被創建并執行 LPUSH 操作。 當 key 存在但不是列表類型時,返回一個錯誤。
注意:在Redis 2.4版本以前的 LPUSH 命令,都只接受單個 value 值。
語法
redis Lpush 命令基本語法如下:
redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN
(2)將列表city里的頭部的元素移除
lpop city
Redis Lpop 命令用于移除并返回列表的第一個元素。
語法
redis Lpop 命令基本語法如下:
redis 127.0.0.1:6379> Lpop KEY_NAME
(3)將age列表的尾部元素移除到home列表的頭部
Redis Rpoplpush 命令用于移除列表的最后一個元素,并將該元素添加到另一個列表并返回。
語法
redis Rpoplpush 命令基本語法如下:
redis 127.0.0.1:6379> RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME
(4)?對一個已存在的列表插入新元素
Redis EXISTS 命令用于檢查給定 key 是否存在。
語法
redis EXISTS 命令基本語法如下:
redis 127.0.0.1:6379> EXISTS KEY_NAME
(5)查看list的值長度
Redis Llen 命令用于返回列表的長度。 如果列表 key 不存在,則 key 被解釋為一個空列表,返回 0 。 如果 key 不是列表類型,返回一個錯誤。
語法
redis Llen 命令基本語法如下:
redis 127.0.0.1:6379> LLEN KEY_NAME
4、?hash類型數據的命令操作:
(1)?設置一個hash表,order表里包括的鍵值信息有:id:1,customer_name:張三
Redis Hset 命令用于為哈希表中的字段賦值 。
如果哈希表不存在,一個新的哈希表被創建并進行 HSET 操作。
如果字段已經存在于哈希表中,舊值將被覆蓋。
語法
redis Hset 命令基本語法如下:
redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE
(2)?創建一個hash表,表里的鍵值批量插入
Redis Hmset 命令用于同時將多個 field-value (字段-值)對設置到哈希表中。
此命令會覆蓋哈希表中已存在的字段。
如果哈希表不存在,會創建一個空哈希表,并執行 HMSET 操作。
語法
redis Hmset 命令基本語法如下:
redis 127.0.0.1:6379> HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN
(3)?獲取order對應的map的所有key
Redis Hkeys 命令用于獲取哈希表中的所有域(field)。
語法
redis Hkeys 命令基本語法如下:
redis 127.0.0.1:6379> HKEYS key
(4)?獲取order對應的map的鍵值數量
(5)?獲取order表里的id值
2、舉例說明list和hash的應用場景,每個至少一個場景?
List的應用場景:論壇評論、秒殺、消息隊列
Hash的應用場景:java里結構化的信息存儲,例如用戶個人信息(姓名、性別、興趣愛好)用hash結構存儲
3、配置一redis的主從復制
1. 數據冗余:主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式。
2. 故障恢復:當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗 余。
3. 負載均衡:在主從復制的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫 Redis數據時應用連接主節點,讀Redis數據時應用連接從節點),分擔服務器負載;尤其是在寫少讀多的場 景下,通過多個從節點分擔讀負載,可以大大提高Redis服務器的并發量。
4. 讀寫分離:可以用于實現讀寫分離,主庫寫、從庫讀,讀寫分離不僅可以提高服務器的負載能力,同時可 根據需求的變化,改變從庫的數量;
5. 高可用基石:除了上述作用以外,主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制是Redis高 可用的基礎
下載文件
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
解壓
1.tar zxvf redis-3.2.1.tar.gz
2.mv redis-3.2.1 redis-3.2.1.master
3.tar zxvf redis-3.2.1.tar.gz
4.mv redis-3.2.1 redis-3.2.1.slave-1
5.tar zxvf redis-3.2.1.tar.gz
6.mv redis-3.2.1 redis-3.2.1.slave-2
7.yum install gcc gcc-c++ make -y
執行make和make test
分別進入文件夾:redis-3.2.1.master、redis-3.2.1.slave-1和redis-3.2.1.slave-2的src目錄,執行命令:
1.cd redis-3.2.1.master/src
2.make
若出現下面問題:
轉到:https://www.cnblogs.com/futdream/p/10889262.html
3.make test
若出現下面問題:
轉到:https://www.cnblogs.com/zhaoshunjie/p/5907029.html
//其他兩個目錄執行相同的操作
修改配置文件:redis.conf
主要修改4個參數:
- port;
- logfile;
- slaveof;
- pidfile;
- daemonize(配置以daemon方式運行)
修改master文件:redis.conf:
配置文件的其他部分不要改動,修改如下內容:
port 6379
pidfile /var/run/redis_6379.pid
# slaveof <masterip> <masterport>
logfile "/var/log/redis.master.log"
daemonize yes
?
?
修改slave-1的配置文件:
port 6380
pidfile /var/run/redis_6380.pid
slaveof 127.0.0.1 6379
logfile "/var/log/redis.slave1.log"
daemonize yes
修改slave2的配置文件:
port 6381
pidfile /var/run/redis_6381.pid
slaveof 127.0.0.1 6379
logfile "/var/log/redis.slave-6381.log"
daemonize yes
開啟master和slave1、slave2
開啟master (salve的開啟方式與此類似)
轉到目錄:redis-3.2.1.master 下(slave則轉到相應的目錄),執行:
/src/redis-server redis.conf
運行成功后,查看logfile可以看到如下界面:
開啟slave1
運行成功后,查看logfile可以看到如下界面:
開啟slave2
運行成功后,查看logfile可以看到如下界面:
客戶端連接-測試同步
如果出現下面問題:
轉到:https://www.jianshu.com/p/a001fd6a236d