大型網站分佈式緩存技術

大型網站:node

高併發 包括 訪問節點  和  數據庫   hadoop 按照理論單表達1000億級別才值得使用linux

固然也有些公司沒有達到 也使用,這樣也能夠提升系統的性能redis

關係型數據庫 和  非關係型數據庫的區別數據庫

關係型數據庫  安全

數據一致性比較好(支持事務)  ruby

支持複雜查詢  服務器

通用性 技術成熟性多線程

非關係型數據庫
高併發 大數據下讀寫能力較強併發

基於分佈式 易於擴展 可伸縮 
簡單,弱結構化存儲app

數據庫表設計 

空間維度    時間維度  索引建立技巧

110220160601UUID   存儲值

110220160701UUID   

select * from user  where innum >= 110220160600UUID and innum <= 110220160700UUID  

(UUID用0替換)  查詢 區域代碼爲 1102  201606月份的數據

Redis 和Memcached區別

Redis是單線程的   Memcached 多線程的

單線程 能夠保證數據的原子性

Redis特色支持多數據類型如String List Hash Set等

Memcached支持事務  

RDB AOF 兩種方式持久化到硬盤

redis知識

Redis 目前業界提供三種方式去應用在生產環境

第一種:使用主從複製的方式

第二種:使用高可用的哨兵,keepalived的方式

第三種:集羣方式或者第三方支持如codis集羣等技術

redis 安裝

1.把下載好的redis放到linux 、usr/local 文件夾下    而後進行解壓  tar -zxvf redis.tar.gz

2.在redis文件目錄下   運行   make       (進行編譯)

3.cd 到src 下面     運行    make install

(cenos下安裝須要 yun install gcc

安裝完後 執行 cd到src 下  make MALLOC=libc   安裝完成

3.驗證 (查看src下的目錄,有redis-server、redis-cil便可)

4.創建兩個文件夾存放redis命令和配置文件

mkdir -p /usr/local/redis/etc     mkdir -p /usr/local/redis/bin

-p表明遞歸建立文件夾

5.把redis-3.2.1下的redis.conf 移動到/usr/local/redis/etc 下

6.把redis-3.2.1/src裏面的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-dump、redis-cli、redis-server 文件夾移動到bin下  命令

mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

7.啓動時並指定配置文件: ./redis-server /usr/local/redis/ect/redis.conf  (注意要使用後臺啓動 因此修改redis.conf裏面的daemonize 改成yes)

8.驗證啓動是否成功

ps -ef |grep redis 查看是否有redis服務 或者查看端口: netstat -tunp | grep 6378

進入redis客戶端 ./redis-cil    退出客戶端 quit

退出redis服務(1) pkill redis-server  (2)kill 進程號 (3)/usr/local/redis/bin/redis-cil shutdown

redis語法:

set name zhangs   設置 nana 的值爲zhangs

get name zhangs   獲取name的值

使用setex mycolor  10 red    設置mycolor 值有效期10秒  10 秒後發貨nil  nil表示空

mset

mset key1 bhz key2 bh2 key3 bh3

mget key1 key2 key3

incr 遞增一個數字

decr 遞減一個數字

append[name]方法 字符串追加方法

strlen[name] 方法 獲取字符串的長度

incrby 和 decrby 對某個值進行指定長度的遞增遞減

Hash 類型

hset myhash filed1 hello (myhash 是集合的名字 field1是字段名 hello爲值)

hget myhash field1 獲取內容

存儲多個值

hset myhash sex nan addr beijin  設置多個值 ??

hgetall myhash 獲取多個值

List

lpush方法  (先進後出)

lpush list1 "hello" 

lpush list1 world

lrange list1 0 -1(表示從頭取到尾)

rpush方法:從尾部加入元素(隊列)先進先出

rpush list2 beijing 

rpush list2 ext 

lrange list2 0-1

inset方法:插入元素

形如:linset list3 before [集合的元素][插入的元素]

set類型和zset類型

smembers set1 查詢set1集合裏面的元素

sdiffstore set1 set2  查找相同的元素 

sadd  向名稱爲key 的set中添加元素   (set 不容許重複元素)

srem 方法  刪除set集合元素

spop 方法  隨機返回刪除的key

sdiff 方法  返回兩個集合的不一樣元素(哪一個集合在前面就以那個集合爲標準)

sdiffstore方法: 將返回的不一樣元素存儲到另一個集合裏

返回集合的交集

sinterstore方法: 返回交集結果,存入set3中

sinter set1 set2 

sinterstore set3 set1 set2  (將結果寫入到set3中)

sunion方法: 取並集

sunionstore方法:取得並集,存入set3中

sunion set1 set2 

sunionstore set3 set1 set2(將結果寫入到set3中)

redis高級命令

keys *    查詢當前系統存儲的數據

keys s* 模糊匹配

exists key 是否存在指定的key

exprise  key 設置某個key的過時時間

ttl  key 查看剩餘時間

persist  key 取消過時時間

select 1 (切換區域)   redis一共16個數據庫  小標從0開始

move [key][數據庫下標] 當前數據中的key 轉移到其餘數據庫中

randomkey 隨機返回數據庫裏面的一個key

rename 重命名key

echo 打印命令

dbsize 查看數據庫的key數量

info 獲取數據庫信息

config get 實時傳輸收到的請求(返回相關配置)

config get * 返回全部配置

flushdb 清空當前數據庫 flushall 清空全部數據庫

redis 安全性

vi /etc/redis.conf 文件 裏面的    requirepass*****    找到進行修改

重啓服務 pkill redis-server

redis-cli -a bhz  進入

主從複製

redhat 6.5版本

防火牆查看  service iptables status

防火牆關閉  service iptables stop

防火牆開啓  service iptables start

redhat 7.0版本

查看防火牆狀態。

systemctl status firewalld

臨時關閉防火牆命令。重啓電腦後,防火牆自動起來。

systemctl stop firewalld

永久關閉防火牆命令。重啓後,防火牆不會自動啓動。

 systemctl disable firewalld

打開防火牆命令。

systemctl enable firewalld

在從的服務器上修改redis.conf  文件  slaveof 127.0.0.1 6379

持久化方式

aof    修改appendonly = yes

redis集羣

第一步

新建文件夾redisclouser

在該文件下建立多個文件夾 如 7001  7002 7003 7004 7005 7006

第二步

copy redis.conf  到這6個文件下

第三步

修改每一個文件下的redis.conf 文件

bind 192.168.147.128   將ip改爲  本機ip

port 7001    修改端口號  7001-7006

dir /root/redis-cluster/7001   修改dir 路徑分別指向6個文件夾

cluster-enabled yes   改爲yes 開啓集羣模式

cluster-config-file nodes-7001.conf   將nodes-XX.conf  改爲對應的文件夾名

appendonly yes   持久化方式  改爲 aof

第四步

啓動6個redis

redis-server /root/redis-cluster/001/redis.conf     001-007

netstat  -tunpl  | grep redis     或者  ps -el  | grep rendis 查看啓動狀況
 

第五步安裝ruby

yum install ruby

gem install redis

上步碰到卡死:請執行先代碼

$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
$ gem sources -l
*** CURRENT SOURCES ***

第六步

cd 到redis安裝目錄 src下

./redis-trib.rb create --replicas 1 192.168.147.128:7001 192.168.147.128:7002 192.168.147.128:7003 192.168.147.128:7004 192.168.147.128:7005 192.168.147.128:7006

說明   1 表明比例

第七步

redis集羣搭建完成進行驗證 鏈接任意一個客戶端進行驗證

./redis-cli -c -h -p(c表明集羣模式 h表明端口 p表明端口)

如: ./redis.cli -c -h 192.168.147.129 -p 700*

關閉redis集羣裏面的服務   ./redis.cli -c -h 192.168.147.129 -p 7001 shutdown

 

 

 


 

 

linux命令:

:%s/7001/7002   全局替換語法

:/7001      搜索7001

Ruby 安裝

$ ./configure
$ make
$ sudo make install
相關文章
相關標籤/搜索