成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

redis實戰(zhàn)-創(chuàng)新互聯(lián)

主要用作緩存功能,不用來做數(shù)據(jù)庫和消息服務(wù)器

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、沁源ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學管理、有技術(shù)的沁源網(wǎng)站制作公司

單點服務(wù)器搭建

1:下載release包:
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
解壓:tar -zxvf
2:進入目錄后編譯:make,需要安裝c:yum install gcc-c++
編譯時:jemalloc/jemalloc.h: No such file or directory
jemalloc重載了LInux的ANSI C的malloc和free函數(shù):make的時候指定參數(shù):
make MALLOC=libc
編譯后文件都在src中
3:啟動服務(wù)器:
src/redis-server
4:連接服務(wù)器:src/redis-cli

集群搭建

使用的是4.0以上的環(huán)境,利用自帶的ruby腳本搭建redis cluster,需要至少6個節(jié)點,三主三從
1:分別在多個節(jié)點上安裝單服務(wù)器,然后修改redis.conf文件
最小化配置:
port 7000
cluster-enabled yes
cluster-config-file nodes.conf //啟動的時候會由redis生成和管理
cluster-node-timeout 5000
appendonly yes
bind 10.99.32.16 //需要綁定自己節(jié)點的ip,否則外部不能訪問
2:啟動時使用src/redis-server ./redis.conf
多臺實例分別啟動
3:如果已經(jīng)安裝ruby則不需要執(zhí)行這一步
安裝ruby的過程:
下載release包:
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz
解壓,./configure && make && make install
安裝完畢后即可以使用gem install redis
安裝過程可能會報錯,自行解決。
4:src/redis-trib.rb create --replicas 1 10.99.32.16:6379 10.99.32.17:6379 10.99.32.18:6379 10.99.32.20:6379 10.99.32.22:6379 10.99.32.23:6379
最少需要6個節(jié)點
出現(xiàn)[OK] All 16384 slots covered.即為成功
5:追加新節(jié)點
1:先啟動節(jié)點實例
2:使用redis-trib.rb
./redis-trib.rb add-node myNewNodeIp:port
追加副本節(jié)點:
./redis-trib.rb add-node --slave 127.0.0.1:7006 127.0.0.1:7000
給新副本節(jié)點指定master節(jié)點:
./redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 127.0.0.1:7006 127.0.0.1:7000
6:移除節(jié)點
./redis-trib del-node myip:port mynodeId

一些概念

集群端口:
每一個redis集群節(jié)點需要開啟兩個tcp連接。一個是客戶端連接,例如默認6379,plus端口通過增加10000來獲取數(shù)據(jù)端口,例如16379
另一個端口是集群總線,這是節(jié)點對節(jié)點的通信通道,使用二進制傳輸協(xié)議。節(jié)點通過集群總線來偵測故障,配置更新和故障轉(zhuǎn)移授權(quán)和更多。客戶端不應(yīng)該使用集群總線端口進行通信,但可以使用redis命令端口。

集群數(shù)據(jù)分片:把數(shù)據(jù)分散到各個節(jié)點進行保存。redis集群不會使用始終如一的hashing,但每個分片一個key的形式,稱之為hash slot。redis有16384個hash slot,并且計算出hash slot的key。例如有3個節(jié)點
NodeA包含 hash slot 0-5500
NodeB包含5501-11000
NodeC包含11011-16383

redis cluster不保證強一致性

直接運行redis服務(wù)器時會在前端運行,如果需要在后臺運行:
后臺運行redis:把配置文件redis.conf的 daemonize改成yes

-
配置集群時,如果出現(xiàn)卡著一直不懂,可能之前配置過一些節(jié)點,關(guān)閉了再重新運行腳本。如果運行腳本報:Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in databas
解決:刪除appendonly.aof文件和nodes.conf文件

-
緩存key的設(shè)計:
1:最長是1024字節(jié),不要太長,不要太短,key比對耗時
2:使用schema來標識,例如com.payment.User:id
二進制安全字符:不會解析一些特殊字符,例如轉(zhuǎn)義符號等
Redis key:是二進制安全的,這意味著你可以使用任意二進制序列作為一個key,從一個字符串像foo到一個jpeg文件的內(nèi)容??兆址瑯邮呛戏ǖ膋ey
key的少量其他規(guī)則:
1:非常長的key不是一個好主意,1024byte的key不好
2:太短的key也不好

數(shù)據(jù)類型

數(shù)據(jù)類型:
String:最基礎(chǔ)的數(shù)據(jù)類型,是二進制安全的,意味著,Redis字符串可以包含任何類型的數(shù)據(jù),
一個String值可以大512M
1:可以使用String作為原子計數(shù)器,使用INCR,DECR,INCRBY
2:字符串追加,使用APPEND命令
3:使用字符串作為隨機訪問vector
4:對大量數(shù)據(jù)進行編碼,壓縮進小空間

List:按插入順序排序。頭部或者尾部tail,left或者right
list大長度是2的32次方-1
redis的list主要的功能是支持常量時間插入和刪除頭部和尾部的元素。即使很多插入的數(shù)據(jù)
訪問兩端的元素是非??焖俚?,但如果想訪問中間的元素會很慢,是O(N)的操作。
主要用途:
1:建立社交網(wǎng)絡(luò)時間軸模型,使用lpush插入,然后使用lrange來獲取少量最近插入的數(shù)據(jù)
2:可以使用lpush和ltrim來創(chuàng)建一個永遠不會超出給定數(shù)量的list,但要記住最新的N個元素。
3:list可以用來作為原始消息傳遞
4:可以做大量內(nèi)容

set:不排序的字符串集合,執(zhí)行O(1)。
Redis Set不允許重復(fù)的成員,添加相同的成員會導致有一個獨立的副本。實際上著意味著添加成員不需要檢查是否已經(jīng)存在。
可以在服務(wù)器端做聯(lián)合操作
set的長度是2的32次方-1
主要用途:
1:可以跟蹤唯一內(nèi)容,例如想要知道所有帖子的唯一ip地址,簡單地使用SADD來處理一個頁面,這樣可以確保沒有重復(fù)的ip唄添加
2:能夠很好地標識關(guān)聯(lián)關(guān)系??梢詣?chuàng)建一個標簽系統(tǒng)。這樣可以添加所有有指定標簽的對象的id到集合中。
3:可以使用set來抽取元素,spop,srandmember

hash:一個map類型,字段和值,用來表示對象,例如user:1 userObj
一個帶有少量字段的hash可以使用很少的空間來存儲。,因此可以存儲百萬級對象在一個很小的redis實例中。hash主要用來標識對象,他們能存儲許多元素,因此你可能夠使用hash來保存其他內(nèi)容
每個hashkey存儲2的32次方-1個key-value對,多于4億對

持久化

redis提供持久化選項:
1:RDB:執(zhí)行某個時間點的快照
2:AOF:記錄所有服務(wù)器收到的寫操作,可以在服務(wù)器重啟的時候重新執(zhí)行,構(gòu)造原始的數(shù)據(jù)集。使用追加方式。redis能夠在日志很大的時候在后臺重寫。
3:可以禁止持久化,數(shù)據(jù)只在服務(wù)器運行的時候存在
4:在同一個實例中組合AOF,RDB。在這種情況下,當redis重新啟動,AOF文件就會被用來構(gòu)造原始數(shù)據(jù),

RDB優(yōu)點:
1:RDB是一個非常緊湊的獨立文件,代表redis某個時間點的數(shù)據(jù)。rdb文件優(yōu)先用來做備份。例如,你可以每小時壓縮你的RDB文件,然后每天保存一個RDB的快照。這樣可以很容易恢復(fù)不同版本的數(shù)據(jù)。
2:RDB是一個非常好的災(zāi)難恢復(fù),作為單獨的壓縮文件,可以傳輸?shù)綌?shù)據(jù)中心
3:RDB大化redis的性能,因為redis父進程只需要進行分配,而子進程則完成其余的內(nèi)容。
4:RDB允許快速啟動,而AOF則不能

RDB缺點:
1:如果需要盡可能少的數(shù)據(jù)丟失,RDB不是一個好的方式。你需要配置很多個保存點才能保證數(shù)據(jù)少丟失。
2:RDB需要經(jīng)常fork來使子進程能夠進行持久化數(shù)據(jù)。

AOF優(yōu)點:
1:使用AOF,redis更持久化,可以使用不同的fsync策略。使用這些fsync策略,每秒寫執(zhí)行都會在一個后臺程序中保存。
2:AOF是一個僅追加日志
3:redis能夠在AOF文件過大的時候自動重寫,重寫是安全的。
4:AOF包含了所有操作的日志

AOF缺點:
1:AOF文件比RDB文件大
2:AOF比RDB慢,fsync策略會每秒執(zhí)行一次記錄
3:bug

分布式唯一ID

采用41bit存放時間:精確到毫秒
12bit存放節(jié)點分片的ID:大值為4095
10bit存放自增ID:
比如GTM時間 Fri Mar 13 10:00:00 CST 2015 ,它的距1970年的毫秒數(shù)是 1426212000000,假定分片ID是53,自增長序列是4,則生成的ID是:
5981966696448054276 = 1426212000000 << 22 + 53 << 10 + 4

結(jié)合spring進行緩存操作

spring boot里面使用的是Lettuce客戶端連接
1:引入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2:配置redis服務(wù)器
spring.redis.host=redis-cs
spring.redis.port=6379
spring.redis.timeout=60000
這里是簡單的配置,還可以配置連接密碼
3:配置連接工廠


@Resource
private LettuceConnectionFactory myLettuceConnectionFactory;
@Bean
    public RedisTemplate<String, Serializable> redisTemplate() {
            RedisTemplate<String, Serializable> template = new RedisTemplate<>();
            template.setKeySerializer(new StringRedisSerializer());
            template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
            template.setConnectionFactory(myLettuceConnectionFactory);
            return template;
}

4:注入RedisTemplate

@Autowired
private RedisTemplate<String, String> redisTemplate;

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當前題目:redis實戰(zhàn)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://jinyejixie.com/article18/disggp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、全網(wǎng)營銷推廣網(wǎng)站導航、軟件開發(fā)、品牌網(wǎng)站設(shè)計網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
保山市| 东城区| 集贤县| 邓州市| 宣威市| 连云港市| 乐至县| 垫江县| 竹山县| 庐江县| 延津县| 龙江县| 安多县| 宜宾县| 库伦旗| 民丰县| 宜兰县| 凯里市| 清水河县| 凤翔县| 临海市| 武威市| 彭泽县| 海南省| 蓬溪县| 时尚| 潮安县| 雷山县| 泸水县| 简阳市| 贞丰县| 西峡县| 珠海市| 仙游县| 穆棱市| 安徽省| 武川县| 霍城县| 东阿县| 定襄县| 甘洛县|