redis操作合并,是對(duì)redis管道操作的宏觀思考,就是將多個(gè)redis操作合并到一起向redis做請(qǐng)求,提高 redis服務(wù)的性能。同時(shí)因?yàn)闇p少了網(wǎng)絡(luò)往返的時(shí)間,也降低接口的相應(yīng)時(shí)間。
操作多個(gè)鍵時(shí),redis單點(diǎn)與集群的區(qū)別
在redis集群中,對(duì)于多個(gè)鍵的操作比如集合的并操作(準(zhǔn)確來說是多個(gè)鍵不在一個(gè)哈希槽上),是不支持的。同樣當(dāng)你使用redis的管道與事務(wù),涉及到的命令操作多個(gè)鍵,也是不支持的,例子:
但是phpredis拓展,自己實(shí)現(xiàn)了幾個(gè)可以在集群中操作多鍵的函數(shù)(實(shí)現(xiàn)原理是RedisCluster類在遍歷每個(gè)鍵的哈希槽,然后對(duì)每個(gè)哈希槽進(jìn)行操作):
mget:返回給定的一個(gè)或多個(gè)字符串鍵的值
mset:為多個(gè)字符串鍵設(shè)置值
del:刪除鍵
unlink:非阻塞刪除鍵,redis版本大于4.0.0
同時(shí)也可以通過鍵哈希標(biāo)簽(Keys hash tags),來確保多個(gè)鍵在同一個(gè)哈希槽中,然后再進(jìn)行這些鍵的操作。
操作同一個(gè)鍵時(shí)
1.添加鍵的同時(shí)對(duì)鍵設(shè)置過期時(shí)間
set命令是原生支持添加鍵的同時(shí)設(shè)置過期時(shí)間,而其他類型的鍵則可以通過管道或事務(wù)添加過期時(shí)間,例子:
2.一次性向key里添加多個(gè)數(shù)據(jù)
比如lpush,rpush,sadd,zadd是可以同時(shí)向鍵里添加多條數(shù)據(jù),例子: