大型網站: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