3 回答

TA貢獻1963條經驗 獲得超6個贊
redis主從復制集群
實現方式:選擇一臺redis服務器作為master節點(負責寫操作),另外一臺或多臺服務器作為slave節點(負責讀操作),slave節點上的數據完全由master節點同步過來。
作用:降低單節點redis服務器的讀寫負載,將讀寫分離到不同的服務器 提供數據的可用性
配置方式: Master節點不用作任何變動 Slave節點上的配置文件redis.conf需要修改如下配置
#slaveof <masterip> <masterport>改為salveof 127.0.0.1 6379最好讓服務器配成只讀屬性salve-read-only yes123456
要想實現高可用即故障轉移: 需要使用 keepalive
redis數據分片(Sharding)集群
實現方式:由若干臺互不相干的redis服務器組成一個集群,互相獨立,由集群的前置節點或者客戶端實現將數據分散插入到集群中的各服務器上
作用:擴大數據存儲的容量,降低單臺服務器負載
步驟
首先準備兩個服務器 其中兩個服務器的服務名稱和端口號要不相同,兩個生產的dump.rdb文件要在不同的路徑下面,而且第二個服務器不能打開主從服務器的配置,配置如下,要注釋掉該配置
開啟兩個服務器,在后臺運行
后臺運行可以修改如下配置,將daemonize改為yes即可
然后編寫分片集群的代碼
public static void main(String[] args) { //poolConfig是連接池的配置參數GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); //shards是分片集群中所有分片服務器信息列表,JedisShardInfo是分片服務器信息ArrayList<JedisShardInfo> shards = new ArrayList<>(); //將集群中的兩臺shard服務器信息封裝到兩個JedisShardInfo對象中JedisShardInfo shard1 = new JedisShardInfo("192.168.90.131",6379);JedisShardInfo shard2 = new JedisShardInfo("192.168.90.131",6380); //將分片服務器信息對象添加到分片服務器信息列表shards中shards.add(shard1);shards.add(shard2); //創建一個帶數據分片功能的jedis連接池ShardedJedisPool shardedJedisPool = new ShardedJedisPool(poolConfig, shards); //從連接池中獲取一個帶數據分片功能的jedis連接ShardedJedis jedis = shardedJedisPool.getResource(); for (int i=0;i<1000;i++){jedis.set("string-key-"+i,"1000"+i);}jedis.close();shardedJedisPool.close();}123456789101112131415161718192021222324252627282930
可以進行檢測,6379端口的客戶端是否存在6380端口的key

TA貢獻1797條經驗 獲得超4個贊
redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。
這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。
與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。Redis 是一個高性能的key-value數據庫。
redis的出現,很大程度補償了memcached這類keyvalue存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。

TA貢獻1798條經驗 獲得超7個贊
Redis是一種高級key-value數據庫。它跟memcached類似,不過數據可以持久化,而且支持的數據類型很豐富。有字符串,鏈表,集 合和有序集合。
支持在服務器端計算集合的并,交和補集(difference)等,還支持多種排序功能。
所以Redis也可以被看成是一個數據結構服務器。
- 3 回答
- 0 關注
- 1323 瀏覽
添加回答
舉報