分布式計算-redis數據庫_第1頁
分布式計算-redis數據庫_第2頁
分布式計算-redis數據庫_第3頁
分布式計算-redis數據庫_第4頁
分布式計算-redis數據庫_第5頁
已閱讀5頁,還剩133頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

主講:個人主頁郵箱/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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論