nosql系列之redis
? ?特點:
? ? ? ?1)并發(fā)寫入
? ? ? ?2)從海量數(shù)據(jù)查找某一條數(shù)據(jù)記錄
? ? ? ?3)高擴(kuò)展性和高可用性
? ?redis和mongodb的區(qū)別
? ? ? ?redis
? ? ? ? ? ?基于緩存释移,資格老,支持多種數(shù)據(jù)結(jié)構(gòu)吕粹,消耗內(nèi)存較多,支持?jǐn)?shù)萬QPS,支持持久化存儲
? ? ? ?memcache
? ? ? ? ? ?速度快绰更,不能備份,響應(yīng)速度快,支持十幾萬的QPS搏色,bug較少
? ? ? ?mongodb基于文件
? ? ? ? ? ?社區(qū)活躍善茎,查詢功能強(qiáng)大券册,更新快,支持索引文檔類數(shù)據(jù)庫垂涯,最接近關(guān)系式數(shù)據(jù)庫烁焙,結(jié)構(gòu)相對單一
? ?redis ? ? ? ?-- ? ?通過鍵值存儲數(shù)據(jù)
? ?安裝
? ?make
? ?make ? ?test ? ? ? ?-- 如果報錯,則安裝tcl
? ?make ? ?PERFIX=/usr/local/redis ? ?install
? ?cp ? ?/usr/src/redis-3.0.3/redis.conf ? ?/usr/local/redis
? ?./bin/redis-server ? ?./redis.conf ? ? ? ?-- 開啟redis服務(wù)
? ?vim ? ?redis.conf
? ?daemonize ? ?yes ? ? ? ?--放在后臺選項
? ?./bin/redis-cli ? ?-h ? ?localhost ? ?-p ? ?6379
? ?bin/下的文件
? ?redis-check-aof ? ?redis-check-dump ? ? ? ?-- 日志文件
? ?redis-benchmark ? ? ? ?-- 檢測工具
? ?./redis-benchmark ? ?-n ? ?100000 ? ?-c ? ?60
? ?string字符串類型
? ?keys ? ?* ? ? ? ?--查看所有鍵值
? ?set ? ?age ? ?19 ? ? ? ?--設(shè)置鍵值的數(shù)據(jù)
? ?get ? ?age ? ? ? ? ? ?--查看鍵值的數(shù)據(jù)
? ?keys ? ?age ? ? ? ?--查看鍵值本身
? ?setnx ? ?name1 ? ?zhangsan ? ? ? ?--防覆蓋新建鍵值
? ?setex ? ?name2 ? ?30 ? ?Janni ? ? ? ?--新建或修改臨時鍵值耕赘,有效時間30s
? ?ttl ? ?name2 ? ? ? ?--查看鍵值的有效期
? ?mset ? ?a1 ? ?111 ? ?a2 ? ?222 ? ?a3 ? ?333 ? ? ? ?--設(shè)置多個鍵值
? ?mget ? ?a1 ? ?a2 ? ?a3 ? ? ? ?--查看多個鍵值
? ?msetnx ? ?a3 ? ?444 ? ?a4 ? ?555 ? ? ? ?--創(chuàng)建多個防覆蓋機(jī)制鍵值
? ?setrange ? ?a3 ? ?2 ? ?lisi ? ? ? ?--替換骄蝇,從第二個字符開始
? ?getset ? ?a3 ? ?"xxx" ? ? ? ?--查看原值并修改
? ?getrange ? ?a3 ? ?0 ?5 ? ? ? ?--查看a3鍵值的0-5之間的字符
? ?incr ? ?c1 ? ? ? ?--鍵值依次增加1
? ?incrby ? ?c1 ? ?100 ? ? ? ?--鍵值依次增加100,值可自定義
? ?decr ? ?c1 ? ? ? ?--鍵值依次減少1
? ?decrby ? ?c1 ? ?100 ? ? ? ?--鍵值依次減少100操骡,值可自定義
? ?strlen ? ?b1 ? ? ? ?--查看鍵值的長度
? ?append ? ?b1 ? ?lisi ? ? ? ?--追加鍵值的數(shù)據(jù)
? ?del ? ?b1 ? ? ? ?--刪除鍵值
? ?hash類型
? ?hset ? ?hash1 ? ?name1 ? ?hanhan ? ? ? ?--創(chuàng)建第一組數(shù)據(jù)
? ? ? ? ? ? ? ? ? 鍵 ? ? ? ?字段 ? ? ? ? ? 鍵值
? ?hget ? ?hash1 ? ?name1 ? ? ? ?--查第一組的第一個字段
? ?hsetnx ? ?hash1 ? ?name1 ? ?Janni ? ? ? ?--防覆蓋創(chuàng)建
? ?hmset ? ?hash1 ? ?name1 ? ?name2 ? ? ? ?--創(chuàng)建多個字段
? ?hmget ? ?hash1 ? ?name1 ? ?name2 ? ? ? ?--查看多個字段
? ?hlen ? ?hash1 ? ? ? ? ? ?--查字段個數(shù)
? ?hgetall ? ?hash1 ? ? ? ?--查指定鍵中的字段和值
? ?hkeys ? ?hash1 ? ? ? ?--查指定鍵中的字段名稱
? ?hvals ? ?hash1 ? ? ? ?--查指定鍵中的數(shù)值
? ?hdel ? ?hash1 ? ?name3 ? ? ? ?--刪除指定鍵中的字段
? ?hincrby ? ?hash1 ? ?id1 ? ?5 ? ? ? ?--hash1鍵中的id1字段每次增加5
? ?list雙向列表
? ?1 ? ?2 ? ?3 ? ?4 ? ?5 ? ? ? ? ? ? ? ? ? 正數(shù)下標(biāo)
?-5 ? ?-4 ? ?-3 ? ?-2 ? ?-1 ? ? ? ? ? ? ?負(fù)數(shù)下標(biāo)
lpush ? ?list1 ? ?1 ? ?2 ? ?3 ? ?4 ? ? ? ?--創(chuàng)建隊列向左
rpush ? ?list1 ? ?one ? ?two ? ?three ? ? ? ?--創(chuàng)建隊列向右
lrange ? ?list1 ? ?0 ? ?-1 ? ? ? ? ? ?--查list1中所有的隊列
linsert ? ?list1 ? ?before ? ?two ? ?hi ? ? ? ?--在list1列表中的two前面插入hi隊列 ? ?(before | after)
lset ? ?list1 ? ?1 ? ?“six” ? ? ? ?--修改隊列中元素的值
lrem ? ?list1 ? ?-2 ? ?hi ? ? ? ?--刪除元素中重復(fù)的值九火,其中-2代表幾個 ,并且是倒序的
ltrim ? ?list1 ? ?0 ? ?3 ? ? ? ?--保留list1上以下標(biāo)為主的0-3的隊列
lpop ? ?list2 ? ? ? ? --刪左邊第一個
rpop ? ?list2 ? ? ? ?--刪右邊第一個
rpoplpush ? ?list1 ? ?list2 ? ? ? ?--把list1的最后一個元素放到list2中
llen ? ?list2 ? ?查有多少個隊列
lindex ? ?list2 ? ?1 ? ? ? ?--通過下標(biāo)查看元素值
? ?set集合
? ?交集 ? ? ? ?差集 ? ? ? ?并集
sadd ? ?set1 ? ?aa ? ?bb ? ?cc ? ? ? ?--添加set集合
smembers ? ?set1 ? ? ? ?--查看集合中所有的元素
srandmember ? ?set1 ? ? ? ?--隨機(jī)查看
spop ? ?set1 ? ? ? ?--隨機(jī)刪除
srem ? ?set1 ? ? ? ?--指定刪除
scard ? ?set1 ? ? ? ?--查看該集合有多少個元素
sismember ? ?set1 ? ?bb ? ? ? ?--查看bb是否屬于set1集合的元素
sdiff ? ?set1 ? ?set2 ? ? ? ?--查看set1和set2的差集
sdiffstore ? ?set3 ? ?set1 ? ?set2 ? ? ? ?--查看set1和set2的差集册招,并寫入到set3
sinter ? ?set1 ? ?set2 ? ? ? ?--查看set1和set2的交集
sinterstore ? ?set3 ? ?set1 ? ?set2 ? ? ? ?--查看set1和set2的交集岔激,并寫入到set3
sunion ? ?set1 ? ?set2 ? ? ? ?--查看set1和set2的并集
sunionstore ? ?set3 ? ?set1 ? ?set2 ? ? ? ?--查看set1和set2的交集,并寫入到set3
? ?zset有序集合 ? ?sorted ? ?set
zadd ? ?zset1 ? ?11 ? ?aa ? ?22 ? ?bb ? ?33 ? ?cc ? ? ? ?--創(chuàng)建有序集合
zrange ? ?zset1 ? ?0 ?-1 ? ?withscores ? ? ? --查看有序集合是掰,withscores參數(shù)是查看有序集合的分?jǐn)?shù) ? ?從小到大的順序
zrevrange ? ?zset1 ? ?0 ?-1 ? ?withscores ? ? ? ?--查看有序集合虑鼎,從大到小的順序
zrangebyscore ? ?zset1 ? ?10 ? ?20 ? ? ? ?--查有序集合zset1中分?jǐn)?shù)10-20之間的元素
zrem ? ?zset1 ? ?aa ? ? ? ?--刪除有序集合中指定的值
zincrby ? ?zset1 ? ?5 ? ?aa ? ? ? ?--有序集合zset1中aa的值依次增加5,如不存在键痛,則創(chuàng)建
zrank ? ?zset1 ? ?aa ? ? ? ?--通過元素名獲取下標(biāo)炫彩,從小到大的順序
zrevrange ? ?zset1 ? ?aa ? ? ? ?--通過元素名稱獲取下標(biāo),從大到小的順序
zcard ? ?zset1 ? ? ? ?--查看zset1中有幾個元素
zcount ? ?zset1 ? ?10 ?20 ? ?--查看zset1中10-20之間的有多少個元素
zremrangeburank ? ?zset1 ? ?1 ?2 ? ? ? ?--根據(jù)下標(biāo)刪除數(shù)據(jù)
zremrangebyscore ? ?zset1 ? ?10 ? ?22 ? ? ? ?--根據(jù)分?jǐn)?shù)刪除數(shù)據(jù)
zinterstore ? ?zset3 ? ?2 ? ?zset1 ? ?zset2 ? ? ? ?--取2個有序集合的交集絮短,并保存到zset3
zunionstore ? ?zset3 ? ?zset3 ? ?2 ? ?zset1 ? ?zset2 ? ? ? ?--取2個有序集合的并集江兢,并保存到zert3
? ?全局命令
dbsize ? ? ? ?--統(tǒng)計所有鍵值的數(shù)量
exists ? ?aa ? ? ? ?--查看某個鍵值是否存在
expire ? ? ? ?設(shè)置生效時間
rename ? ?d1 ? ?d2 ? ?--改鍵值的名稱,d1改為d2
type ? ?a1 ? ? ? ?--查a1鍵值的類型
info ? ? ? ?--查數(shù)據(jù)庫版本信息
select ? ?2 ? ? ? ?--選擇其它數(shù)據(jù)庫 ? ?范圍(0-15)
more ? ?d2 ? ?1 ? ? ? ?--移動鍵值到某數(shù)據(jù)庫
flushdb ? ? ? ?--清空當(dāng)前數(shù)據(jù)庫
flushdball ? ? ? ?清空所有數(shù)據(jù)庫
? ?redis應(yīng)用
啟用密碼:
? ?vim ? ?/usr/local/redis/redis.conf
? ?requirepass ? ?123456
關(guān)閉服務(wù):
? ?pkill ? ?redis
使用密碼登陸:
? ?/usr/local/redis/bin/redis-server ? ?/usr/local/redis/redis.conf ? ? ? ?開啟服務(wù)
? ?/usr/local/redis/bin/redis-cli ? ?-h ? localhost ? -p ? 6379 ? ? ? ?登陸redis
數(shù)據(jù)庫備份和還原
? ?備份:
? ?save ? ?保存到dump.rdb文件
? ?cp -p ?/usr/local/redis/dump.rdb ?/root ? ? ? ? ? ?把備份文件拷貝到/root下
? ?還原:
? ?cp -p /root/dump.rdb ?/usr/local/redis
? ?設(shè)置備份文件的路徑:
? ?vim ? ?redis.conf
? ?dir ? ?/usr/local/redis
設(shè)置主從
? ?cp ? ?-r ? ?redis ? ?redis-slave
? ?修改主配置文件的參數(shù)丁频,不要和主服務(wù)器的相同
? ?vim ? ?redis-slave/redis.conf
? ?pidfile ? ?/usr/local/redis-slave/redis.pid
? ?port ? ?6380
? ?dir ? ?/usr/local/redis-slave ? ? ? ?--指定備份的目錄
? ?slaveof ? ?127.0.0.1 ? ?6379 ? ? ? ?--主服務(wù)器的IP地址和端口
? ?masterath ? ?123456 ? ? ? ? ? ?--有密碼則開啟
原理:
(1)Slave服務(wù)器連接到Master服務(wù)器.
(2)Slave服務(wù)器發(fā)送SYCN命令.
(3)Master服務(wù)器備份數(shù)據(jù)庫到.rdb文件.
(4)Master服務(wù)器把.rdb文件傳輸給Slave服務(wù)器.
(5)Slave服務(wù)器把.rdb文件數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中.
? ?開啟從服務(wù)器的redis進(jìn)程:
? ?/usr/local/redis-slave/bin/redis-server ? ?/usr/local/redis/redis.conf
? ?登陸redis:
? ?/usr/local/redis-slave/bin/redis-cli ? ?-h ? ?localhost ? -p ? ?6380 ? ?-a ? ?123456