####################################
---Redis
~ Redis是一個開源的可基於內存亦可持久化的日誌型、
key-value數據庫 //非關係型數據庫
~ Redis的存儲分爲內存存儲、磁盤存儲、和log文件三部分
~ 和Memcached相比,它支持存儲的value類型相對更多,包括字符串(strings)、
lists列表、sets、集合zsets(sotred set)和hashes表
~ Redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在
此基礎上實現了master-slave(主從)同步
#######################################
---部署Redis
端口號6379
源碼包編譯
tar zxf redis-3.0.6.tar.gz
cd redis-3.0.6
make && make install //編譯安裝
./utils/install_server.sh #初始化
service redis_6379 start/stop/status #啓動服務
或
/etc/init.d/redis_6379 start/stop/
服務器程序
--redis-server
客戶端程序
--redis-cli
#cli --命令行操作界面 gui--圖形操作界面 tui--文本操作界面
主配置文件
/etc/redis/6379.conf
###############################
---使用客戶端軟件快速測試服務器:
redis-cli
>set name 100 #name 變量名(key) 100 值(value)
[ok]
>get name
"100"
字符串操作
>set first "hello word" #first (key) hello word (value)
>get first
"hello world"
>getrange first 6 -1 #查看第6位及以後的所有 -1代表末尾最後一個,-2代表倒數第二 -5代表倒
數第五
>getrange first 6 10 #查看6-10位
>setrange first 6 "redis" #把 hello world 第6位及以後換成redis 從0開始 空格也算一位
>get first
"hello dedis"
>append first "AAA" #向first(key)中追加
>get first
"hello dedisAAA"
>setbit mytest 0 1 #設置2進制的第0位爲1 0001
>setbit mytest 3 1 #設置第3位爲1 1001
>bitcount mytest #統計mytest設置爲1的有多少
2
>get num1 100 #+1
>incr num1
"101"
>decr num1 #-1
"100"
>incrby num1 10 #+10
>decrby num1 10 #-10
>incrbyfloat num1 +0.3/-0.8 #+0.3 /-08
>mset a 10 b "abc"
>mget a b
"10"
"abc"
---哈希表(hashes)類型數據
>hset site google "www.google.com" # site --key google --field www.goo..--value
#一個key對應多個域,一個域對應一個value
>hset site baidu "www.baidu.com"
>hget site google
>hget site google
>hkeys site #查看key中存在的field
"google"
"baidu"
>hvals site #查看key中的所有value
"www.google.com"
"www.baidu.com"
>hgetall site #返回field和value
"google"
"www.google.com"
"baidu"
"www.baidu.com"
>hdel site google #刪除google
---list列表
>lpush mylist dmy zhf zzg nb #一個key 多個value
>lrange mylis 0 -1 #呈現爲從左向右寫入 和寫入順序相反
"nb"
"zzg"
"zhf"
"dmy"
>rpush mylist mm #從右寫入相當於寫在末尾後面
>lrange mm 0 -1
"nb"
"zzg"
"zhf"
"dmy"
"mm"
>lset mylist 2 zz #在第2個值後面寫入zz 從0開始
>lpop /rpop mylist #刪除表頭/表尾
>llen mylist #key的長度
>lindex mylist 1 #查看mylist第1個值 從0開始
>lset mylist 3 aa #將mylist中第3個值改爲aa
>keys *
>keys 支持通配符
>flushall #清空所有數據
>select 1 #選擇第一個數據庫 0-15 共16個庫
>move username 1 #把key 放到第一個數據庫
###################################
--配置master-slave(主從)同步
主數據庫在客戶端寫入數據後保存並把數據複製到從數據庫中
當客戶端訪問此數據時,可由從數據庫提供數據。
【master】
修改配置文件
/etc/redis/6379.conf
requirepass redis123
service redis_6379 stop
service redis_6379 start #啓動失敗 ,設置密碼後 服務需要密碼認證
解決
/etc/init.d/redis_6379
$CLIEXEC -a redis123 -p $REDISPORT shutdown
service redis_6379 start
netstat -tlnp | grep redis
配置密碼後登錄 redis-cli
redis-cli -h 192.168.4.1 -a redis123
【slave】
修改配置文件
/etc/redis/6379.conf
slaveof 192.168.4.1 6379 #指定主服務器地址、端口號
masterauth redis123 #告知密碼
redis-cli
>keys *
...
...
從服務器無法寫入數據,只有主服務器可以。