redis介紹
redis的功能特性
1,高速讀寫 2,數據類型豐富 3,支持持久化 4,多種內存分配及回收策略 5,支持事務 6,消息隊列、redis用的多的仍是發佈-訂閱模式 7,支持高可用 8,支持分佈式分片集羣
linux操做系統是怎麼分配內存的?mysql
把內存分爲三大塊 PSS page cache anno page:程序之間進行交互的時候。。。。#匿名頁 linux操做系統以page進行分配內存,page大小默認4kb slab allocator 內存頁的劃分
怎麼保證使用連續的內存linux
slab allocator
redis的優點
一、redis在單用戶(單線程)多併發讀寫的性能高 二、在多用戶(多線程)少讀寫時memache更優 三、redis是一個單核的管理機制,生產中通常是,單機多實例的框架
redis的使用
下載 安裝 解壓 tar -zxvf redis-3.2.6.tar.gz cd redis-2.6.0 make #編譯安裝 yum install gcc* cd /application/redis-3.2.6/src ./redis-server & #啓動redis服務端 ,&後臺運行,否則一直佔用端口 ps -ef |grep redis #查看是否啓動 ./redis-cli #鏈接服務器
使用redis
set foo bar
get fooredis
基本的配置文件 vim /etc/redis.conf #去編輯redis.conf文件 #添加配置 daemonize yes port 6379 dbfilename dump.rdb dir "/application/data/6379" logfile /var/log/redis.log ###### mkdir -p /application/data/6379 ps -ef |grep redis ./redis-server /etc/redis.conf /application/redis-3.2.6/src/redis-server /etc/redis.conf #爲了避免用每次都切進去,在環境變量裏面設置一下 cd /root vim .bash_profile PATh 添加 :/application/redis-3.2.6/src :wq保存 配置生效 source .bash_profile redis-cli 配置完成以後,能夠直接在命令行調用redis命令 例如: redis-cli shutdown 或者 redis-server /etc/redis.conf #安全控制(也在配置文件裏面設置) bind 10.0.0.200 #綁定ip10字段 requirepass root #沒有用戶只有密碼,密碼爲root redis-cli shutdown redis-server /etc/redis.conf 設置完成以後須要換種方式打開: redis-cli -h 10.0.0.200 -a root #改完配置文件每次都須要重啓,不用每次都重啓,在線變動配置: 獲取當前配置 CONFIG GET * 變動運行配置 CONFIG SET loglevel 'notice' 修改密碼 CONFIG SET requirepass "123" CONFIG GET requirepass 在線修改的配置,下次登陸生效,可是重啓以後配置會丟失 #Python連接redis import redis ....
redis的數據持久化
RDB持久化:快照,只記錄一個時刻內存數據狀態(快照記錄某一時刻的數據) AOF持久化:只追加日誌文件的方式,記錄了redis裏面全部的修改命令 RDB記錄某一時刻的,還能夠用作備份 AOF比較安全,可是比較囉嗦,每次都把全部的搜保存下來了 #若是配置持久化功能 方式一: RDB 持久化配置:仍是修改配置文件 dbfilename dump.rbd dir '/application/data/6379' save 900 1 900秒內有一個更改 save 300 10 300秒內有10個更改 save 60 10000 60秒內有10000個更改 #也能夠設置配置作持久化 方式二: set foo bar save 或者 bgsave #手工觸發持久化 #配置擴展 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes #AOF 配置 appendonly yes applendfsync every
redis數據類型
計數器 incr fensi ##你點擊一下增長一下,刷點擊量 incrby fensi 10000 DECR fensi #遞減 DECRBY fensi 20 set foo bar set foo ex 10 hset stu(表) id(列) 100 hmset stu id 100 name zhangsna lpush pengyouquan 'today is nice day' lpush pengyouquan 'today is bad day' lpush pengyouquan 'today is a day' lpop pengyouquan #刪除最後一條 lrange pengyouquan 0 -1 #查看全部 有序集合:像是排行榜
發佈訂閱模式
發佈訂閱模式(中間橋樑:頻道):朋友圈是很好的證實。先關注你就能看到 開兩個端口 PUBLISH weibo hello 先訂閱某個頻道 SUBSCRIBE weibo 訂閱weibo一個頻道,subscribe PSUBSCRIBE * 一次性訂閱多個頻道(廣告類) PSUBSCRIBE it.* 一次性訂閱多個和it相關的頻道 退出就取消訂閱了
redis的事物管理
redis使用multi開啓事物 discard 撤銷 exec 退出 redis 中的鎖機制 mysql的悲觀鎖:我在作操做的時候,你別和我搶, redis的樂觀鎖:查看一下,
redis的一些管理命令
Info Clinet list 客戶端鏈接的情況以及對系統的使用狀況 Client kill ip:port config get * CONFIG RESETSTAT 重置統計 CONFIG GET/SET 動態修改 Dbsize FLUSHALL 清空全部數據 select 1 FLUSHDB 清空當前庫 MONITOR 監控實時指令
主從複製
1 |
假如說你訪問redis呢,訪問不了呢,數據查看不了了,怎麼辦? |
Python sentinel
1 |
|