




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
主講:個人主頁郵箱/lamplijieNoSQL數據庫之Redis數據庫管理單元目標1.NoSQL介紹2.Redis的介紹3.Redis適用場合4.Redis的安裝與部署5.Redis的數據類型6.Redis的常用命令7.Redis的高級應用NoSQL介紹NoSQL(NoSQL
=
Not
Only
SQL),意為反SQL運動,是一項全新的數據庫
性運動,早期就有人提出,發展至2009年趨勢越發高漲。它指的是非關系型的數據庫。隨著互聯網web2.0
的興起,傳統的關系數據庫在應付web2.0
,特別是超大規模和高并發的SNS類型的
web2.0純
站已經顯得力不從心,
了很多難以克服的問題,而非關系型的數據庫則由于其本身的特點得到了非常迅速的發展。NoSQL介紹NoSQL是以key-value形式
,和傳統的關系型數據庫不一樣,不一定遵循傳統數據庫的一些基本要求,比如說遵循SQL標準、ACID屬性、表結構等等,這類數據庫主要有以下特點:非關系型的、分布式的、開源的、水平可擴展的。NoSQL特點處理超大量的數據運行在便宜的PC服務器集群上擊碎了性能瓶頸NoSQL適用場景對數據高并發讀寫對海量數據的高效率
和對數據的高可擴展性和高可用性Redis的介紹Redisis
an
open
source,
advancedkey-value
store.
Itis
often
referred
to
as
a
data
structureserver
sincekeyscan
contain
strings,
hashes,
lists,
sets
and
sortedsets.Redis是一個開源的,先進的key-value
。它通常被稱為數據結構服務器,因為鍵可以包含字符串,哈希,鏈表,集合和有序集合。Redis的介紹Redis是一個Key-Value
系統。它支持
的value類型很多,包括string(字符串)、list(鏈表)、哈希、set(集合)、zset(有序集合)。這些數據類型都支持push/pop、add/remove及取交集和并集及更豐富的操作,Redis支持各種不同方式的排序。為了保證效率,數據都是緩存在內存中,它也可以周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件。Redis的介紹提供的API語言包括:C、C++、C#、ClojureCommon
Lisp、Erlang、Haskell、Java、Javascript、Lua、Objective-C、Perl、PHP、Python、Ruby
Scala、Go、TclRedis適用場合目前全球最大的Redis用戶是 ,在新浪有200多臺物理機,400多個端口正在運行著Redis,有+4G的數據在Redis上來為 用戶提供服務。Redis適用場合概分為如下在的2種:1.應用程序Redis適用場合Redis適用場合Redis數據庫提供多種靈活的數據結構和數據操作,為不同的大象構建不同的冰箱。Redis適用場合1.取
N個數據的操作2.
榜應用,取TOP
N操作3.需要精確設定過期時間的應用4.計數器應用5.Uniq操作,獲取某段時間所有數據排重值6.實時系統,反
系統Redis適用場合7.Pub/Sub構建實時消息系統8.構建隊列系統9.緩存Redis的安裝與部署Redis的 站是Redis的安裝與部署步驟一:安裝包:wget
/files/redis-
2.4.17.tar.gz步驟二:編譯源程序:tar
zxvfredis-2.4.17.tar.gzcd
redis-2.4.17makemake
install
PREFIX=/usr/local/redisRedis的安裝與部署Redis的安裝與部署步驟三:移動文件,便于管理:mkdir
-p
/usr/local/redis/binmkdir
-p
/usr/local/redis/etcmv
/lamp/redis-2.4.17/redis.conf/usr/local/redis/etccd
/lamp/redis-2.4.17/srcmv
mkreleasehdr.sh
redis-ben ark
redis-check-aof
redis-check-dump
redis-cliredis-server
/usr/local/redis/binRedis的安裝與部署步驟三:啟動Redis服務:/usr/local/redis/bin/redis-server/usr/local/redis/etc/redis.confRedis服務端的默認連接端口是6379Redis的安裝與部署需要把開啟默認情況下,Redis不是在 運行的,Redis的
運行。vi/usr/local/redis/redis.conf將daemonize的值改為yesRedis的安裝與部署步驟四:客戶端連接/usr/local/redis/bin/redis-cli步驟五:停止Redis實例可以使用/usr/local/redis/bin/redis-clishutdown也可以使用pkill
redis-serverRedis的配置daemonize
如果需要在
運行,把該項改為yespidfile
配置多個pid的地址默認在/var/run/redis.pidbind
綁定ip,設置后只接受來自該ip的請求port
端口,默認為6379timeout
設置客戶端連接時的超時時間,單位為秒loglevel
分為4級,debug、verbose、notice、warninglogfile
配置log文件地址databases
設置數據庫的個數,默認使用的數據庫為0save
設置redis進行數據庫鏡像的頻率Redis的配置pression
在進行鏡像備份時,是否進行壓縮Dbfilename
鏡像備份文件的文件名Dir
數據庫鏡像備份的文件放置路徑Slaveof
設置數據庫為其他數據庫的從數據庫驗證Masterauth
主數據庫連接需要的Requirepass
設置登錄時需要使用的Maxclients
限制同時連接的客戶數量Maxmemory
設置redis能夠使用的最大內存Appendonly
開啟append
only模式Redis的配置Appendfsync
設置對appendonly.aof文件同步的頻率vm-enabled
是否開啟虛擬內存支持vm-swap-file
設置虛擬內存的交換文件路徑vm-max-memory
設置redis使用的最大物理內存大小vm-size
設置虛擬內存的頁大小vm-pages
設置交換文件的總的page數量vm-max-threads
設置VM
IO同時使用的線程數量Glueoutputbuf
把小的輸出緩存存放在一起hash-max-zipmap-entries
設置hash的臨界值Activerehashing
重新hashRedis的數據類型Strings類型及操作String是最簡單的類型,一個Key對應一個Value,string類型是二進制安全的。Redis的string可以包含任何數據,比如jpg
或者序列化的對象。Strings類型Set設置key對應的值為string類型的value例如:
添加一個name=lijie的鍵值對redis
127.0.0.1:6379>
set
name
lijieOKStrings類型Setnx設置key對應的值為string類型的value,如果key已經存在,返回0,nx是not
exist的意思例如:添加一個name=lijie_new的鍵值對。Strings類型redis
127.0.0.1:6379>
get
name“lijie"redis
127.0.0.1:6379>
setnx
name
lijie_new(integer)
0redis
127.0.0.1:6379>
get
name“lijie"Strings類型Setex設置key對應的值為string類型的value,并指定此鍵值對應的有效期。例如:
添加一個haircolor=red的鍵值對,并指定有效期為10秒Strings類型redis
127.0.0.1:6379>
setex
haircolor
10
redOKredis
127.0.0.1:6379>
get
haircolor"red"redis
127.0.0.1:6379>
get
haircolor(nil)Strings類型Setrange設置指定key的value值的子字符串例如:
希望將lijie的126郵箱替換為gmail郵箱Strings類型redis
127.0.0.1:6379>
get
name“
"redis
127.0.0.1:6379>
setrange
name
6(integer)
15redis
127.0.0.1:6379>
get
name“
"Strings類型mset一次設置多個key的值,成功返回ok表示所有的值都設置了,失敗返回0表示沒有任何值被設置。Strings類型redis
127.0.0.1:6379>
mset
key1
lijie1
key2
lijie3OKredis
127.0.0.1:6379>
get
key1“lijie1"redis
127.0.0.1:6379>
get
key2“lijie2"Strings類型msetnx一次設置多個key的值,成功返回ok表示所有的值都設置了,失敗返回0表示沒有任何值被設置,但是不會覆蓋已經存在的key。Strings類型get獲取key對應的string值,如果key不存在返回nil。getset設置key的值,并返回key的舊值。Strings類型getrange獲取key的value值的子字符串。getrange
name
0
5mget一次獲取多個key的值,如果對應key不存在則對應返回nil。Strings類型incr對key的值做加加操作,并返回新的值。incrby同incr類似,加指定值,key不存在時候會設置key,并認為原來的value是0。Strings類型decr對key的值做減減操作。decrby同decr類似,減指定值。Strings類型append給指定key的字符串追加value,返回新字符串值的長度。append
name
@li-jie.meStrings類型strlen取指定key的value值的長度。hashes類型hashes類型及操作Redis
hash是一個string類型的field和value的表。它的添加、刪除操作都是0(1)(平均)。hash特別適合用于 對象。相較于將對象的每個字段存成單個string類型。將一個對象
在hash類型中會占用更少的內存,并且可以更方便的存取整個對象。hashes類型hset設置hash
field為指定值,如果key不存在,則先創建。redis
127.0.0.1:6379>
hset
user1
username
lijie(integer)
1redis127.0.0.1:6379>hashes類型hsetnx設置hash
field為指定值,如果key不存在,則先創建。如果存在返回0。redis
127.0.0.1:6379>
hsetnx
myhash
field
"
o"(integer)
1redis
127.0.0.1:6379>
hsetnx
myhash
field
"
o"(integer)
0hashes類型hmset同時設置hash的多個field。redis
127.0.0.1:6379>
hmset
myhash
field1"
o"field2
worldOKredis127.0.0.1:6379>hashes類型hget獲取指定的hash
field。redis
127.0.0.1:6379>
hget
myhash
field1“
o”redis
127.0.0.1:6379>
hget
myhash
field2“World”redis127.0.0.1:6379>hashes類型hmget獲取全部指定的hash
field。redis
127.0.0.1:6379>
hmget
myhash
field1
field2“
o”“World”redis127.0.0.1:6379>hashes類型hincrby指定的hash
field加上給定值。redis
127.0.0.1:6379>
hincrby
myhash
age
-8(integer)
12redis
127.0.0.1:6379>hashes類型hexists測試指定field是否存在。redis
127.0.0.1:6379>
hexists
myhash
age(integer)
1redis
127.0.0.1:6379>hashes類型hlen返回指定hash的field數量。redis
127.0.0.1:6379>
hlen
myhash(integer)
4redis
127.0.0.1:6379>hashes類型hdel刪除指定hash的field。redis
127.0.0.1:6379>
hdel
myhash
age(integer)
1redis
127.0.0.1:6379>hashes類型hkeys返回hash的所有field。redis
127.0.0.1:6379>
hkeys
myhash”field2”“field”“field3”redis127.0.0.1:6379>hashes類型hvals返回hash的所有value。redis
127.0.0.1:6379>
hvals
myhash”World”“
o”“12”redis127.0.0.1:6379>hashes類型hgetall獲取某個hash中全部的field及value。redis
127.0.0.1:6379>
hgetall
myhash”field1”“world”“field2”4)
“
o”“field3”“12”lists類型lists類型及操作List是一個鏈表結構,主要功能是push、pop、獲取一個范圍的所有值等等,操作中key理解為鏈表的名字。Redis的list類型其實就是一個每個子元素都是string類型的雙向鏈表。 可以通過push、pop操作從鏈表的頭部或者尾部添加刪除元素,這樣list既可以作為棧,又可以作為隊列。lists類型lpush在key對應list的頭部添加字符串元素。redis
127.0.0.1:6379>
lpush
mylist
"world"(integer)
1redis
127.0.0.1:6379>
lpush
mylist
"
o"(integer)
2redis
127.0.0.1:6379>
lrange
mylist
0
-1"
o““world”lists類型rpush在key對應list的尾部添加字符串元素。redis
127.0.0.1:6379>
rpush
mylist2
"world"(integer)
1redis
127.0.0.1:6379>
rpush
mylist2
"(integer)
2redis
127.0.0.1:6379>
lrange
mylist21) "
world“0
-1o"2) “o”lists類型linsert在key對應list的特定位置前或后添加字符串元素。redis
127.0.0.1:6379>
rpush
mylist3
"world"(integer)
1redis
127.0.0.1:6379>
linsert
mylist3
before “world”
“
o”(integer)
2redis
127.0.0.1:6379>
lrange
mylist3
0-1"
o““world”lists類型Lset設置list中指定下標的元素值。redis
127.0.0.1:6379>
rpush
mylist4
“
o"(integer)1redis
127.0.0.1:6379>
lset
mylist4
0
“world”OKredis
127.0.0.1:6379>
lrange
mylist4
0-11)
“world”lists類型lrem從key對應list中刪除n個和value相同的元素。(n<0從尾刪除,n=0全部刪除)redis127.0.0.1:6379>
rpush
mylist5
“
o"(integer)1redis127.0.0.1:6379>
rpush
mylist5
“
o"(integer)2redis
127.0.0.1:6379>
lrem
mylist51
“
o”(integer)1lists類型ltrim保留指定key的值范圍內的數據redis127.0.0.1:6379>
rpush
mylist8
“one"(integer)
1redis
127.0.0.1:6379>
rpush
mylist8
“two"(integer)
2redis
127.0.0.1:6379>
ltrim
mylist8
1
-1(integer)
1redis
127.0.0.1:6379>
lrange
mylist8
0
-11)
"two“lists類型lpop從list的頭部刪除元素,并返回刪除元素redis
127.0.0.1:6379>
lrange
mylist
0
-1"
o""world"redis
127.0.0.1:6379>
lpop
mylist"
o"redis
127.0.0.1:6379>
lrange
mylist
0
-1"world"redis
127.0.0.1:6379>lists類型rpop從list的尾部刪除元素,并返回刪除元素redis
127.0.0.1:6379>
lrange
mylist2
0
-1"
o""world"redis
127.0.0.1:6379>
rpop
mylist2“world"redis
127.0.0.1:6379>
lrange
mylist2
0
-1“
o"redis
127.0.0.1:6379>lists類型redis
127.0.0.1:6379>
lrange
mylist5
0
-1"three""
o"redis
127.0.0.1:6379>
lrange
mylist6
0
-1"
o""foo"redis
127.0.0.1:6379>
rpoplpush
mylist5
mylist6"
o"redis
127.0.0.1:6379>
lrange
mylist5
0
-1"three"redis
127.0.0.1:6379>
lrange
mylist6
0
-1“
o""
o""foo“lists類型lindex返回名稱為key的list中index位置的元素redis
127.0.0.1:6379>
lrange
mylist5
0
-1"three""foo"redis127.0.0.1:6379>
lindex
mylist5
0"three"redis127.0.0.1:6379>
lindex
mylist5
1"foo"redis
127.0.0.1:6379>lists類型llen返回key對應list的長度redis
127.0.0.1:6379>
llen
mylist5(integer)
2redis
127.0.0.1:6379>sets類型sets類型及操作Set是集合,它是string類型的無序集合。set是通過hash
table實現的,添加、刪除和查找的復雜度都是0(1)。對集合 可以取并集、交集、差集。通過這些操作 可以實現sns中的好友
和blog的tag功能。sets類型sadd向名稱為key的set中添加元素redis127.0.0.1:6379>
sadd
myset
“o”(integer)1redis
127.0.0.1:6379>
sadd
myset
“world”(integer)1redis
127.0.0.1:6379>
sadd
myset
“world”(integer)0redis
127.0.0.1:6379>sets類型srem刪除名稱為key的set中的元素redis127.0.0.1:6379>
sadd
myset2“one”(integer)1redis127.0.0.1:6379>
sadd
myset2“two”(integer)1redis
127.0.0.1:6379>
srem
myset2
“one”(integer)1redis
127.0.0.1:6379>sets類型spop隨機返回并刪除名稱為key的set中一個元素redis127.0.0.1:6379>
sadd
myset3“one”(integer)1redis127.0.0.1:6379>
sadd
myset3“two”(integer)1redis
127.0.0.1:6379>
spop
myset3“two”redis
127.0.0.1:6379>sets類型sdiff返回所有給定key與第一個key的差集redis
127.0.0.1:6379>
smembersmyset2“three”“two”redis
127.0.0.1:6379>
smembersmyset3“two”“one”redis127.0.0.1:6379>
sdiff
myset2myset3“three”sets類型sdiffstore返回所有給定key與第一個key的差集,并將結果存為另一個keyredis
127.0.0.1:6379>
smembersmyset2“three”“two”redis
127.0.0.1:6379>
smembersmyset3“two”“one”redis127.0.0.1:6379>
sdiffstore
myset4
myset2myset3(integer)1sets類型Sinter返回所有給定key的交集redis
127.0.0.1:6379>
smembersmyset2“three”“two”redis
127.0.0.1:6379>
smembersmyset3“two”“one”redis
127.0.0.1:6379>
sinter
myset2myset3“two”sets類型sinterstore返回所有給定key的交集,并將結果存為另一個keyredis
127.0.0.1:6379>
smembersmyset2“three”“two”redis
127.0.0.1:6379>
smembersmyset3“two”“one”redis
127.0.0.1:6379>
sinterstore
myset6
myset2myset3(integer)1sets類型sunion返回所有給定key的并集redis
127.0.0.1:6379>
smembersmyset2"three""two"redis
127.0.0.1:6379>
smembersmyset3"two""one"redis
127.0.0.1:6379>
sunion
myset2
myset3"three""one""two"sets類型sunionstore返回所有給定key的并集redis
127.0.0.1:6379>
smembersmyset2"three""two"redis
127.0.0.1:6379>
smembersmyset3"two""one"redis
127.0.0.1:6379>
sunionstore
myset6
myset2
myset3(integer)
3sets類型smove從第一個key對應的set中移除member并添加到第二個對應的set中redis
127.0.0.1:6379>
smembersmyset2"three""two"redis
127.0.0.1:6379>
smembersmyset3"two""one"redis127.0.0.1:6379>
smove
myset2myset7three(integer)1sets類型scard返回名稱為key的set的元素個數redis127.0.0.1:6379>
scard
myset2(integer)
1redis
127.0.0.1:6379>sets類型sismember測試member是否是名稱為key的set的元素redis
127.0.0.1:6379>
smembers
myset21)“two”redis
127.0.0.1:6379>
sismember
myset2
two(integer)
1redis
127.0.0.1:6379>
sismember
myset2
one(integer)
0redis
127.0.0.1:6379>sets類型srandmember隨機返回名稱為key的set的一個元素,但不刪除元素redis
127.0.0.1:6379>
smembers
myset3"two""one"redis
127.0.0.1:6379>
srandmember
myset3"two"redis
127.0.0.1:6379>
srandmember
myset3"one"redis
127.0.0.1:6379>sorted
sets類型sorted
sets類型及操作sortedset是set的一個升級版本,它在set的基礎上增加了一個順序屬性,這一屬性在添加修改元素的時候可以指定,每次指定后,zset會自動重新按新的值調整順序。可以理解為有兩列的mysql表,一列存
value,一列存順序。操作中key理解為zset的名字。Sorted
sets類型zaddredis
127.0.0.1:6379>
zadd
myzset
1
"one"(integer)1redis
127.0.0.1:6379>
zadd
myzset
2
"two"(integer)1redis
127.0.0.1:6379>
zadd
myzset
3
"two"(integer)0redis
127.0.0.1:6379>
zrange
myzset
0
-1withscores"one""1""two""3"Sorted
sets類型zrem刪除名稱為key的zset中的元素memberredis
127.0.0.1:6379>
zrange
myzset
0
-1withscores"one""1""two""3"redis
127.0.0.1:6379>
zrem
myzset
two(integer)
1redis
127.0.0.1:6379>
zrange
myzset
0
-1
withscores"one""1"Sorted
sets類型zincrbyredis
127.0.0.1:6379>
zadd
myzset2
1"one"(integer)1redis
127.0.0.1:6379>
zadd
myzset2
2"two"(integer)1redis
127.0.0.1:6379>
zincrby
myzset2
2
"one""3"redis
127.0.0.1:6379>
zrange
myzset2
0
-1
withscores"two""2""one""3"Sorted
sets類型zrankredis
127.0.0.1:6379>
zrange
myzset3
0
-1
withscores"one""1""two""2""three""3""five""5"redis
127.0.0.1:6379>
zrank
myzset3
two(integer)1redis
127.0.0.1:6379>Sorted
sets類型zrevrankredis
127.0.0.1:6379>
zrange
myzset3
0
-1
withscores"one""1""two""2""three""3""five""5"redis
127.0.0.1:6379>
zrevrank
myzset3
two(integer)2redis
127.0.0.1:6379>Sorted
sets類型zrevrangeredis
127.0.0.1:6379>
zrevrange
myzset3
0
-1
withscores"five""5""three""3""two""2""one""1"redis
127.0.0.1:6379>Sorted
sets類型zrangebyscoreredis
127.0.0.1:6379>
zrange
myzset3
0
-1
withscores"one""1""two""2""three""3"redis
127.0.0.1:6379>
zrangebyscore
myzset3
2
3
withscores"two""2""three“"3"Sorted
sets類型zcountredis
127.0.0.1:6379>
zrange
myzset3
0
-1
withscores"one""1""two""2""three""3""five""5"redis
127.0.0.1:6379>
zcount
myzset3
2
3(integer)
2redis
127.0.0.1:6379>Sorted
sets類型zcardredis
127.0.0.1:6379>
zrange
myzset3
0
-1
withscores"one""1""two""2""three""3""five""5"redis
127.0.0.1:6379>
zcard
myzset3(integer)
4redis
127.0.0.1:6379>Sorted
sets類型zremrangebyrankredis
127.0.0.1:6379>
zrange
myzset3
0
-1
withscores"one""1""two""2"redis
127.0.0.1:6379>
zremrangebyrank
myzset3
1
1(integer)
1redis
127.0.0.1:6379>
zrange
myzset3
0
-1
withscores"one""1"redis
127.0.0.1:6379>Sorted
sets類型zremrangebyscoreredis
127.0.0.1:6379>
zrange
myzset3
0
-1
withscores"one""1""two""2""three""3"redis
127.0.0.1:6379>
zremrangebyscore
myzset3
1
2(integer)
2redis
127.0.0.1:6379>
zrange
myzset3
0
-1
withscores"three""3"Redis常用命令Redis提供了豐富 令對數據庫和各種數據庫類型進行操作,這些命令可以在Linux終端使用。1.鍵值相關命令2.服務器相關命令鍵值相關命令Keys返回滿足給定pattern的所有keyredis
127.0.0.1:6379>
keys
*"myzset2""myzset3""mylist""myset2""myset3""myset4""k_zs_1"用表達式*,代表取出所有的key鍵值相關命令exists確認一個key是否存在redis127.0.0.1:6379>
exists
name(integer)0redis127.0.0.1:6379>
exists
age(integer)1redis
127.0.0.1:6379>從結果來看,name鍵不存在,age鍵存在鍵值相關命令del刪除一個keyredis
127.0.0.1:6379>
del
age(integer)
1redis127.0.0.1:6379>
exists
age(integer)
0redis
127.0.0.1:6379>鍵值相關命令dd(indexpire設置一個key的過期時間redis
127.0.0.1:6379>
expire
addr
10(integer)
1re
在本例中, 設置addr
這個key
的過期時(in
間是10
秒,然后 不斷的用ttl
來獲取這re
個key的有效時長,直至為-1說明此值已過re
期(integer)
-1redis
127.0.0.1:6379>鍵值相關命令redis
127.0.0.1:6379>
select
0OKredis
127.0.0.1:6379>
set
age
30OKredis
127.0.0.1:6379>
get
age"30"redis
127.0.0.1:6379>
move
age1(integer)
1redis
127.0.0.1:6379>
get
age(nil)redis
127.0.0.1:6379>
select
1OKredis
127.0.0.1:6379[1]>
get
age"30"鍵值相關命令persist移除給定key的過期時間redis
127.0.0.1:6379[1]>
expire
age
300(integer)1redis127.0.0.1:6379[1]>
ttl
age(integer)294redis
127.0.0.1:6379[1]>
persist
age(integer)
1redis127.0.0.1:6379[1]>
ttl
age(integer)
-1redis
127.0.0.1:6379[1]>鍵值相關命令randomkey隨機返回key空間的一個keyredis
127.0.0.1:6379>
randomkey"mylist7"redis
127.0.0.1:6379>
randomkey"mylist5"redis
127.0.0.1:6379>鍵值相關命令rename重命名keyredis
127.0.0.1:6379[1]>
keys
*1)
"age"redis
127.0.0.1:6379[1]>
rename
age
age_newOKredis
127.0.0.1:6379[1]>
keys
*1)
"age_new"redis
127.0.0.1:6379[1]>鍵值相關命令type返回值的類型redis
127.0.0.1:6379>
typeaddrstringredis
127.0.0.1:6379>
typemyzset2zsetredis
127.0.0.1:6379>
typemylistlistredis
127.0.0.1:6379>服務器相關命令行服ss行測試連接是否存活redis
127.0.0.1:6379>PONG//執rediCourefu//執not
c
cted>PONGredis
127.0.0.1:6379>第一個時,說明此連接正常第二個之前,redis服務器停止,那么l是失敗的
on第三個之前,redis服務器啟動,那么是成功服務器相關命令echo在命令行打印一些內容redis
127.0.0.1:6379>
echo
lijie“lijie"redis
127.0.0.1:6379>服務器相關命令select選擇數據庫。Redis數據庫從0~15,
可以選擇任意一個數據庫來進行數據的存取redis
127.0.0.1:6379>
select
1OKredis
127.0.0.1:6379[1]>
select
16(error)
ERR
invalid
DB
indexredis
127.0.0.1:6379[16]>當選擇16 錯,說明沒有
為16的這個數據庫服務器相關命令quit退出連接。redis
127.0.0.1:6379>
quit[root@localhost
redis-2.2.12]#服務器相關命令dbsize返回當前數據庫中key的數目。redis
127.0.0.1:6379>
dbsize(integer)18redis
127.0.0.1:6379>結果說明此庫中有18個key服務器相關命令redis127.0.0.1:6379>
inforedis_version:2.2.12redis_git_sha1:00000000redis_git_dirty:0arch_bits:32multiplexing_api:epollprocess_id:28480uptime_in_seconds:2515uptime_in_days:0...redis
127.0.0.1:6379>服務器相關命令config
get實時傳儲收到的請求。redis
127.0.0.1:6379>
config
get
dir"dir""/root/4setup/redis-2.2.12"redis
127.0.0.1:6379>本例中
獲取了dir
這個參數配置的值,如果想獲取全部參數據的配置值也很簡單,只需要執行”configget
*”即可將全部的值都顯示出來。服務器相關命令flushdb刪除當前選擇數據庫中的所有key。redis
127.0.0.1:6379>
dbsize(integer)18redis
127.0.0.1:6379>
flushdbOKredis
127.0.0.1:6379>
dbsize(integer)
0redis
127.0.0.1:6379>在本例中 0
號數據庫中的key
都清除了。服務器相關命令flushall刪除所有數據庫中的所有key。redis
127.0.0.1:6379[1]>
dbsize(integer)
1redis
127
0
0
1:6379[1]>
select0OKOOredKdKdis
127.0.0.1:6379[1]>
dbsize(integer)
0redis
127.0.0.1:6379[1]>在本例中 先查看了一個1
號數據庫中有一re
個key,然后我切換到0號庫執行flushall命re
令,結果1號庫中的key也被清除了,說是此命令工作正常。Redis高級實用特性1.安全性2.主從3.事務處理4.持久化機制5.發布訂閱消息6.虛擬內存的使用安全性設置客戶端連接后進行任何其他指定前需要使用的。#
requirepass
foobaredreq警uir告ep:ass因b為eijirnegdis速度相當快,所以在一臺比較好的服務器下,一個外部的用戶可以在一秒鐘
設行置15了0K連次接的的
嘗是試be,iji這ng意味著你需要指定非常非常強大的 來防止
。安全性啟動一個客戶端試一下。[root@localhost
redis-2.2.12]#
src/redis-cliredis
127.0.0.1:6379>
keys
*(error)
ERR
operation
not
permittedredis
127.0.0.1:6379>這里顯示權限被
, 來設置一下權限redis
127.0.0.1:6379>
auth
beijingOKredis
127.0.0.1:6379>
keys
*1)
"name"redis
127.0.0.1:6379>安全性還可以在連接到服務
間就指定一個口令[root@localhost
redis-2.2.12]#src/redis-cli
-a
beijingredis
127.0.0.1:6379>
keys
*1)
"name"redis
127.0.0.1:6379>主從Redis主從 配置和使用都非常簡單。通過主從可以允許多個slave
server擁有和master
server相同的數據庫副本。主從Redis主從 特點:1.Master可以擁有多個slave2.多個slave可以連接同一個master外,還可以連接到其它slave3.主從 不會阻塞master,在同步數據時,master可以繼續處理client請求4.提高系統的伸縮性主從Redis主從 過程:1.Slave與master建立連接,發送sync同步命令2.Master會啟動一個
進程,將數據庫快照保存到文件中,同時master主進程會開始收集新的寫命令并緩存。3.
完成保存后,就將此文件發送給slave4.Slave將此文件保存到硬盤上主從配置主從服務器:配置slave服務器很簡單,只需要在slave的配置文件中加入以下配置:slaveof
192.168.1.1
6379#指定master
的ip
和端口masterauth
lamp#這是主機的主從設置成功后,
來做一個實驗:在主數據庫上設置一對鍵值對redis
127.0.0.1:6379>
set
name
masterOKredis
127.0.0.1:6379>在從數據庫上取這個鍵redis
127.0.0.1:6378>
get
name“master"redis
127.0.0.1:6378>主從那
怎么判斷哪個是主哪個是從呢?
只需調用info就可以得到主從的信息,
在從庫中執行inforedis127.0.0.1:6378>
inforole:slavemaster_host:localhostmaster_port:6379master_link_status:upmaster_last_io_seconds_ago:10master_sync_in_progress:0db0:keys=1,expires=0redis
127.0.0.1:6378>事務處理Redis對事務的支持目前還比較簡單。Redis只能保證一個client發起的事務中 令可以連續的執行,而中間不會 其他client 令。當一個client在一個連接中發出multi命令時,這個連接會進入一個事務上下文,該連接后續
令不會立即執行,而是先放到一個隊列中,當執行exec命令時,redis會順序的執行隊列中的所有命令。簡單事務處理redis
127.0.0.1:6379>
get
age"33"redis
127.0.0.1:6379>
multiOKredis
127.0.0.1:6379>
set
age
10QUEUEDredis
127.0.0.1:6379>
set
age
20QUEUEDredis
127.0.0.1:6379>execOKOKredis
127.0.0.1:6379>
get
age"20"redis
127.0.0.1:6379>如何取消一個事務127
0
0
1
6379
30redis
127.0.0.1:6379>
get
age"20"redis
127.0.0.1:6379>multiOKredisQUredisQUredis
127.0.0.1:6379>
discardOKredis
127.0.0.1:6379>
get
age"20"redis
127.0.0.1:6379>E
可以發現這次2個set
age命令都沒被執行。discard
命令其實就是清空事務 令隊列并退出E
事務上下文,也就是常說的事務回滾。樂觀鎖復雜事務控制樂觀鎖:大多數是基于數據版本(version)的記錄機制實現的。即為數據增加一個版本標識,在基于數據庫表的版本解決方案中,一般是通過為數據庫表添加一個”version”字段來實現 出數據時,將此版本號一同讀出,之后更新時,對此版本號加1。此時,將提交數據的版本號與數據庫表對應記錄的當前版本號進行比對,如果提交的數據版本號大于數據庫當前版本號,則予以更新,否則認為是過期數據。樂觀鎖復雜事務控制(
)第 步
session1redis
127.0.0.1:6379>redis
127.0.0.1:6379>redis
127.0.0.1:6379>redis
127.0.0.1:6379>Redis樂觀鎖實例:假設有一個age的key,
開2個session來對age進行賦值操作, 來看一下結果如何。(3)第3
步session1redis
127.0.0.1:6379>
set
age
20QUEUEDredis
127.0.0.1:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年隔爆型電動執行機構項目投資價值分析報告
- 2025至2030年防水晶項目投資價值分析報告
- 2025至2030年鋅瓦項目投資價值分析報告
- 2025至2030年進排氣門座圈項目投資價值分析報告
- 2025至2030年自攻釘機螺絲項目投資價值分析報告
- 2025至2030年磁阻電流傳感器項目投資價值分析報告
- 2025至2030年帆布腰圍項目投資價值分析報告
- 推動汽車消費升級的創新實施方案
- 輔導員招聘考官重點試題收集
- 高校輔導員招聘面試現狀與展望試題及答案
- 維生素D教學講解課件
- 曾鞏《道山亭記》賞析
- 第十章 結算、轉資移交和工程驗收管理
- Copulas函數及其在水文中的應用模板課件
- 國開電大《財務報表分析》形考完整答案
- 港口營運安全生產風險分級管控體系實施指南
- DB45-T 2228.1-2020公路養護預算編制辦法及定額 第1部分:公路養護工程預算編制辦法及定額-(高清可復制)
- 艾滋病感染HIV篩查檢測報告表
- 全北京市二手房最低指導價
- 黑龍江省第三次國土調查實施方案
- 中考語文復習指導PPT資料30頁課件
評論
0/150
提交評論