国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Redis使用與實(shí)踐

suemi / 750人閱讀

什么是Redis

redis是遠(yuǎn)程的;
redis是基于內(nèi)存的;
redis是非關(guān)系型數(shù)據(jù)庫(kù)
優(yōu)點(diǎn):
1.支持豐富的數(shù)據(jù)類(lèi)型:String,List,Set,Sorted Set,Hash等
2.支持兩種數(shù)據(jù)持久化方式:Snapshotting(內(nèi)存快照)和Append-Only file(日志追加)
3.支持主從復(fù)制

Redis的應(yīng)用場(chǎng)景

緩存
隊(duì)列--使用list結(jié)構(gòu)
數(shù)據(jù)存儲(chǔ)

Redis桌面管理工具

redis-desktop-manager

Redis數(shù)據(jù)類(lèi)型
數(shù)據(jù)類(lèi)型 存儲(chǔ)的值 讀寫(xiě)能力
String 可以是字符串,整數(shù)或浮點(diǎn),統(tǒng)稱(chēng)為元素 對(duì)字符串操作,對(duì)整數(shù)類(lèi)型加減
List 一個(gè)序列集合且每個(gè)節(jié)點(diǎn)都包好了一個(gè)元素 序列兩端推入或彈出元素 修剪,查找或移除元素
Set 各個(gè)不同的元素 從集合中插入或刪除元素
Hash 有key-value的散列組,其中key是字符串,value是元素 按照key進(jìn)行增加刪除
Sort Set 帶分?jǐn)?shù)的score-value有序集合,其中score是浮點(diǎn),value為元素 集合插入,按照分?jǐn)?shù)范圍查找

String類(lèi)型

key value(string/int/float)
127.0.0.1:6379> set string1 demo
OK
127.0.0.1:6379> get string1
"demo"
127.0.0.1:6379> set string2 4
OK
127.0.0.1:6379> get string2
"4" 
127.0.0.1:6379> incr string2 #對(duì)整型進(jìn)行自增操作
(integer) 5
127.0.0.1:6379> get string2
"5"
127.0.0.1:6379> decrby string2 2 #對(duì)整型進(jìn)行減法操作,將string2減去2
(integer) 3
127.0.0.1:6379> get string2
"3"

List類(lèi)型

127.0.0.1:6379> lpush list1 12 #lpush表示從左邊push一個(gè)元素到list1中,l表示left
(integer) 1
127.0.0.1:6379> lpush list1 13
(interger) 2
127.0.0.1:6379> rpop list1  #rpop表示從右側(cè)pop出一個(gè)元素,按照先入先出的原則
“12”
127.0.0.1:6379> lpush list2 12
(integer) 1
127.0.0.1:6379> lpush list2 13
(integer) 2
127.0.0.1:6379> lpush list2 13 #list類(lèi)型不要求集合中的元素唯一,所以可以插入相同的元素,而set類(lèi)型要求集合中元素必須唯一
(integer) 3
127.0.0.1:6379> llen list2 #llen命令列出list2中元素的個(gè)數(shù)
(integer) 3

Set類(lèi)型

127.0.0.1:6379> sadd set1 12
(integer) 1
127.0.0.1:6379> scard set1 #用scard查看set1中的元素個(gè)數(shù)
(integer) 1
127.0.0.1:6379> sadd set1 13
(integer) 1
127.0.0.1:6379> sadd set1 13
(integer) 0
127.0.0.1:6379> scard set1
(integer) 2
127.0.0.1:6379> sismember set1 13 #sismember 命令判斷13是否在set1中
(integer) 1
127.0.0.1:6379> srem set1 13  #srem命令將13從set1中刪除
(integer) 1
127.0.0.1:6379> sismember set1 13 
(integer) 0

Hash類(lèi)型

127.0.0.1:6379> hset hash1 key1 12 #hset命令設(shè)置hash1的鍵為key1,值為12
(integer) 1
127.0.0.1:6379>  hget hash1 key1 #hget命令獲取hash1鍵名為key1的值
"12"
127.0.0.1:6379> hset hash1 key2 13
(integer) 1
127.0.0.1:6379> hset hash1 key3 13
(integer) 1
127.0.0.1:6379> hlen hash1 #hlen命令獲取hash1的長(zhǎng)度
(integer) 3
127.0.0.1:6379> hset hash1 key3 14 #直接修改hash1中key3的值
(integer) 0
127.0.0.1:6379>  hget hash1 key3
"14"
127.0.0.1:6379>  hmget hash1 key1 key2  #hmget 命令一次獲取多個(gè)key的值
1) "12"
2) "13"

Sort Set類(lèi)型

127.0.0.1:6379> zadd zset1 10.1 val1  #zadd命令往zset1中添加一個(gè)元素,score為10.1,value為val1
(integer) 1
127.0.0.1:6379> zadd zset1 11.2 val2
(integer) 1
127.0.0.1:6379> zadd zset1 9.1 val3
(integer) 1
127.0.0.1:6379> zcard zset1  #zcard 命令查看zset1中的元素值
(integer) 3
127.0.0.1:6379> zrange zset1 0 2 withscores #zrange 命令打印出排名
1) "val3"
2) "9.1"
3) "val1"
4) "10.1"
5) "val2"
6) "11.19999999"
127.0.0.1:6379> zrange zset1 val2 #打印出val2的排名
(integer) 2
127.0.0.1:6379> zadd zset1 12.2 val3
(integer) 0
127.0.0.1:6379> zrange zset1 0 2 withscores
1) "val1"
2) "10.1"
3) "val2"
4) "11.19999999"
5) "val3"
6) "12.19999999"
127.0.0.1:6379> zadd zset1 12.2 val2
(integer) 0
127.0.0.1:6379> zrange zset1 0 2 withscores
1) "val1"
2) "10.1"
3) "val2"
4) "12.19999999"
5) "val3"
6) "12.19999999"
常用命令

鍵值相關(guān)命令

 // 1. keys *,代表取出所有的 key
 redis 127.0.0.1:6379> keys *
1) "myzset2"
2) "myzset3"
3) "mylist"
4) "myset2"
5) "myset3"
6) "myset4"
7) "k_zs_1"
8) "myset5"
9) "myset6"
10) "myset7"
11) "myhash"
12) "myzset"
13) "age"
14) "myset"
15) "mylist5"
16) "mylist6"
redis 127.0.0.1:6379> keys mylist*
1) "mylist"
2) "mylist5"
3) "mylist6"
4) "mylist7"
5) "mylist8"
redis 127.0.0.1:6379>
// 2.exists 確認(rèn)一個(gè) key 是否存在
redis 127.0.0.1:6379> exists HongWan
(integer) 0
redis 127.0.0.1:6379> exists age
(integer) 1
redis 127.0.0.1:6379>
// 3. del 刪除一個(gè) key
redis 127.0.0.1:6379> del age
(integer) 1
redis 127.0.0.1:6379> exists age
(integer) 0
redis 127.0.0.1:6379>
// 4. expire 設(shè)置一個(gè) key 的過(guò)期時(shí)間(單位:秒)
redis 127.0.0.1:6379> expire addr 10
(integer) 1
redis 127.0.0.1:6379> ttl addr
(integer) 8
redis 127.0.0.1:6379> ttl addr
(integer) 1
redis 127.0.0.1:6379> ttl addr
(integer) -1
// 們?cè)O(shè)置 addr 這個(gè) key 的過(guò)期時(shí)間是 10 秒,然后我們不斷的用 ttl 來(lái)獲取這個(gè) key 的有效時(shí)長(zhǎng),直至為-1 說(shuō)明此值已過(guò)期
// 5. move將當(dāng)前數(shù)據(jù)庫(kù)中的 key 轉(zhuǎn)移到其它數(shù)據(jù)庫(kù)中
redis 127.0.0.1:6379> select 0
www.ChinaDBA.net 中國(guó) DBA 超級(jí)論壇
49
OK
redis 127.0.0.1:6379> set age 30
OK
redis 127.0.0.1:6379> get age
"30"
redis 127.0.0.1:6379> move age 1
(integer) 1
redis 127.0.0.1:6379> get age
(nil)
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> get age
"30"
redis 127.0.0.1:6379[1]>
// 先顯式的選擇了數(shù)據(jù)庫(kù) 0,然后在這個(gè)庫(kù)中設(shè)置一個(gè) key,接下來(lái)我們將這個(gè)key 從數(shù)據(jù)庫(kù) 0 移到數(shù)據(jù)庫(kù) 1,之后我們確認(rèn)在數(shù)據(jù)庫(kù) 0 中無(wú)此 key 了, 但在數(shù)據(jù)庫(kù) 1 中存在這個(gè)key,說(shuō)明我們轉(zhuǎn)移成功了
// 6. persist 移除給定 key 的過(guò)期時(shí)間
redis 127.0.0.1:6379[1]> expire age 300
(integer) 1
redis 127.0.0.1:6379[1]> ttl age
(integer) 294
redis 127.0.0.1:6379[1]> persist age
(integer) 1
redis 127.0.0.1:6379[1]> ttl age
(integer) -1
redis 127.0.0.1:6379[1]>
// 手動(dòng)的將未到過(guò)期時(shí)間的 key,成功設(shè)置為過(guò)期
// 7. randomkey 隨機(jī)返回 key 空間的一個(gè) key
redis 127.0.0.1:6379> randomkey
"mylist7"
redis 127.0.0.1:6379> randomkey
"mylist5"
redis 127.0.0.1:6379>
// 8. rename 重命名 key
redis 127.0.0.1:6379[1]> keys *
1) "age"
redis 127.0.0.1:6379[1]> rename age age_new
OK
redis 127.0.0.1:6379[1]> keys *
1) "age_new"
// 9.  type 返回值的類(lèi)型
redis 127.0.0.1:6379> type addr
string
redis 127.0.0.1:6379> type myzset2
zset
redis 127.0.0.1:6379> type mylist
list

服務(wù)器相關(guān)命令

// 1. ping 測(cè)試連接是否存活
redis 127.0.0.1:6379> ping
PONG
// 2. echo 在命令行打印一些內(nèi)容
redis 127.0.0.1:6379> echo Helloworld
"Helloworld"
// 3. select 選擇數(shù)據(jù)庫(kù)。Redis 數(shù)據(jù)庫(kù)編號(hào)從 0~15,我們可以選擇任意一個(gè)數(shù)據(jù)庫(kù)來(lái)進(jìn)行數(shù)據(jù)的存取。
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> select 16
(error) ERR invalid DB index
redis 127.0.0.1:6379[16]>
// 4. quit 退出連接
redis 127.0.0.1:6379> quit
[root@localhost redis-2.2.12]#
// 5.  dbsize 返回當(dāng)前數(shù)據(jù)庫(kù)中 key 的數(shù)目
redis 127.0.0.1:6379> dbsize
(integer) 18
redis 127.0.0.1:6379>
// 6.  info 獲取服務(wù)器的信息和統(tǒng)計(jì)
redis 127.0.0.1:6379> info
# Server
redis_version:3.2.100
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:dd26f1f93c5130ee
redis_mode:standalone
os:Windows
arch_bits:64
multiplexing_api:WinSock_IOCP
process_id:2528
.
.
redis 127.0.0.1:6379>
// 7. config get  獲取服務(wù)器配置信息, config get * 表示獲取全部
redis 127.0.0.1:6379> config get dir
1) "dir"
2) "/root/4setup/redis-3.2.100"
redis 127.0.0.1:6379>
// 8. flushdb 刪除當(dāng)前選擇數(shù)據(jù)庫(kù)中的所有 key
redis 127.0.0.1:6379> dbsize
(integer) 18
redis 127.0.0.1:6379> flushdb
OK
redis 127.0.0.1:6379> dbsize
(integer) 0
// 9. flushall 刪除所有數(shù)據(jù)庫(kù)中的所有 key
redis 127.0.0.1:6379[1]> dbsize
(integer) 1
redis 127.0.0.1:6379[1]> select 0
OK
redis 127.0.0.1:6379> flushall
OK
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> dbsize
(integer) 0
redis 127.0.0.1:6379[1]>
PHP操作Redis

String類(lèi)型

//普通set/get操作
$redis->set("library", "predis");
$retval = $redis->get("library");
echo $retval; //顯示 "predis"
 echo "
"; //setex set一個(gè)存儲(chǔ)時(shí)效 $redis->setex("str", 10, "bar"); //表示存儲(chǔ)有效期為10秒 echo $redis->get("str"); //setnx/msetnx相當(dāng)于add操作,不會(huì)覆蓋已有值 var_dump($redis->setnx("foo",12)); //true var_dump($redis->setnx("foo",34)); //foo已經(jīng)存在,無(wú)法覆蓋,所以返回false //getset操作,set的變種,結(jié)果返回替換前的值 echo $redis->getset("foo",56);//返回12 echo $redis->get("foo");//返回56 echo "
"; // incrby/incr/decrby/decr 對(duì)值的遞增和遞減 echo $redis->incr("foo"); //foo為57 echo $redis->incrby("foo",2); //foo為59 echo "
"; //exists檢測(cè)是否存在某值 var_dump($redis->exists("foo"));//true //del 刪除 var_dump($redis->del("foo"));//true echo $redis->get("foo");//空 //type 類(lèi)型檢測(cè),字符串返回string,列表返回 list,set表返回set/zset,hash表返回hash var_dump($redis->type("foo"));//不存在,返回0 $redis->set("str","test"); //append 連接到已存在字符串 $redis->append("str","_123"); //返回累加后的字符串長(zhǎng)度8,此進(jìn)str為 "test_123" echo $redis->get("str"); //test_123 echo "
"; //substr 部分獲取操作 echo $redis->substr("str",0,2);//表示從第0個(gè)起,取到第2個(gè)字符,共3個(gè),返回"tes" //strlen 獲取字符串長(zhǎng)度 echo $redis->strlen("str"); //str為test_123,字符長(zhǎng)度為8 //setbit/getbit 位存儲(chǔ)和獲取 echo $redis->setbit("binary",31,1); //表示在第31位存入1,這邊可能會(huì)有大小端問(wèn)題?不過(guò)沒(méi)關(guān)系,getbit 應(yīng)該不會(huì)有問(wèn)題 echo $redis->getbit("binary",31); //返回1 //keys 模糊查找功能,支持*號(hào)以及?號(hào)(匹配一個(gè)字符) $redis->set("foo1",123); $redis->set("foo2",456); print_r($redis->keys("foo*")); //返回Array ( [0] => foo1 [1] => foo2 ) print_r($redis->keys("f?o?")); //同上Array ( [0] => foo1 [1] => foo2 ) //randomkey 隨機(jī)返回一個(gè)key echo $redis->randomkey(); //可能是返回 "foo1"或者是"foo2"及其它任何一存在redis的key //rename/renamenx 對(duì)key進(jìn)行改名,所不同的是renamenx不允許改成已存在的key $redis->rename("str","str2"); //把原先命名為"str"的key改成了"str2" //expire 設(shè)置key-value的時(shí)效性,ttl 獲取剩余有效期,persist 重新設(shè)置為永久存儲(chǔ) $redis->expire("foo", 1); //設(shè)置有效期為1秒 $redis->ttl("foo"); //返回有效期值1s echo "
"; //dbsize 返回redis當(dāng)前數(shù)據(jù)庫(kù)的記錄總數(shù) echo $redis->dbsize();

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25658.html

相關(guān)文章

  • (學(xué)習(xí)到實(shí)踐)五、docker搭建redis主從實(shí)踐

    摘要:前面容器重建后需要重新運(yùn)行命令綁定關(guān)聯(lián),需要命令行下生效。直接同步成功,在查看關(guān)系均有對(duì)方信息。是否要守護(hù)進(jìn)程這里是經(jīng)過(guò)多次測(cè)試,發(fā)現(xiàn)容器重啟,也會(huì)正常啟動(dòng)。哨兵的配置于此類(lèi)似,略過(guò)。 前面mysql容器重建后需要重新運(yùn)行 change master to 命令綁定關(guān)聯(lián),8.0需要命令行下生效。redis首先想到用官方的,沒(méi)想到進(jìn)去各個(gè)基本shell命令無(wú)法使用,所以先棄了。這次由于官...

    Pocher 評(píng)論0 收藏0
  • (全棧學(xué)習(xí)實(shí)踐)四、docker搭建redis主從實(shí)踐

    摘要:前面容器重建后需要重新運(yùn)行命令綁定關(guān)聯(lián),需要命令行下生效。直接同步成功,在查看關(guān)系均有對(duì)方信息。是否要守護(hù)進(jìn)程這里是經(jīng)過(guò)多次測(cè)試,發(fā)現(xiàn)容器重啟,也會(huì)正常啟動(dòng)。哨兵的配置于此類(lèi)似,略過(guò)。 前面mysql容器重建后需要重新運(yùn)行 change master to 命令綁定關(guān)聯(lián),8.0需要命令行下生效。redis首先想到用官方的,沒(méi)想到進(jìn)去各個(gè)基本shell命令無(wú)法使用,所以先棄了。這次由于官...

    wall2flower 評(píng)論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語(yǔ)言和等其他語(yǔ)言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問(wèn)到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過(guò)的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語(yǔ)言和Java、python等其他語(yǔ)言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    BicycleWarrior 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<