Redis數(shù)據(jù)庫(kù)概述
Redis是一個(gè)開(kāi)源的、使用c語(yǔ)言編寫NoSQL數(shù)據(jù)庫(kù),它是基于內(nèi)存運(yùn)行并支持持久化,采用key-value(鍵值對(duì))的存儲(chǔ)形式, 是目前分布式結(jié)構(gòu)中不可或缺的
Redis相比于其他數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)
- 具有極高的數(shù)據(jù)讀寫速度:讀(110000次/s),寫(81000次/s)
- 支持豐富的數(shù)據(jù)類型:支持key-value、strings、Lists、Hashes(散列值)、Sets等數(shù)據(jù)類型操作
- 支持?jǐn)?shù)據(jù)持久化:可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中
- Redis所有操作都是具有原子性的
Redis安裝部署
[root@redis ~]# yum install -y gcc gcc-c++ make
[root@redis opt]# tar xzf redis-5.0.7.tar.gz
[root@redis opt]# cd redis-5.0.7/
[root@redis redis-5.0.7]# make
[root@redis redis-5.0.7]# make prefix=/usr/local/redis install
[root@redis redis-5.0.7]# cd utils/
[root@redis utils]# ./install_server.sh #啟動(dòng)安裝腳本
Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server
##這一步需要手動(dòng)指定位置,其他都回車即可
[root@localhost utils]# ln -s /usr/local/redis/bin/* /usr/local/bin/
[root@localhost utils]# netstat -antp | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 23276/redis-server
Redis服務(wù)控制
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start
/etc/init.d/redis_6379 restart
/etc/init.d/redis_6379 status
修改配置文件
[root@localhost utils]# vim /etc/redis/6379.conf
[root@localhost utils]# /etc/init.d/redis_6379 restart #重啟服務(wù)
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...
[root@localhost utils]# netstat -antp | grep redis
tcp 0 0 192.168.118.88:6379 0.0.0.0:* LISTEN 23492/redis-server
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 23492/redis-server
Redis命令工具
redis-server:用于啟動(dòng)Redis的工具
redis-benchmark:用于檢測(cè)Redis在本機(jī)的運(yùn)行效率
redis-check-aof:修復(fù)AOF持久化文件
redis-check-rdb:修復(fù)RDB持久化文件
redis-cli:Redis命令行工具
redis-cli -h 遠(yuǎn)程主機(jī)ip -p 服務(wù)端口號(hào) -a 指定密碼
如果沒(méi)有設(shè)置數(shù)據(jù)庫(kù)密碼,可以省略-a選項(xiàng),若不添加任何選項(xiàng)表示,這使用127.0.0.1:6379連接本機(jī)上的Redis數(shù)據(jù)庫(kù)
Redis測(cè)試工具redis-benckmark
redis-benchmark 選項(xiàng):
-h :指定服務(wù)器主機(jī)名
-P :指定服務(wù)器端口
-s :指定服務(wù)器socket(套接字)
-c :指定并發(fā)連接數(shù)
-n :指定請(qǐng)求數(shù)
-d :以字節(jié)的形式指定SET/GET值的數(shù)據(jù)大小
-k :1=keep alive 0=reconnect
-r :SET/GET/INCR 使用隨機(jī)key,SADD使用隨機(jī)值
-p :通過(guò)管道傳輸numreq>請(qǐng)求
-q :強(qiáng)制退出redis
-l :生成循環(huán),永久執(zhí)行測(cè)試
-t :僅運(yùn)行以逗號(hào)分割的測(cè)試命令列表
-I :Idle模式,僅打開(kāi)N哥idle連接并等待
[root@localhost utils]# redis-benchmark -h 192.168.118.88 -P 6379 -c 100 -n 10000
##向主機(jī)發(fā)送100哥并發(fā)連接和10000哥請(qǐng)求測(cè)試性能
[root@localhost utils]# redis-benchmark -h 192.168.118.88 -p 6379 -q -d 10
##測(cè)試存取10字節(jié)的數(shù)據(jù)包性能
PING_INLINE: 925925.88 requests per second
PING_BULK: 1470588.12 requests per second
SET: 900900.88 requests per second
GET: 934579.44 requests per second
INCR: 1136363.62 requests per second
LPUSH: 578034.69 requests per second
RPUSH: 793650.75 requests per second
LPOP: 584795.31 requests per second
RPOP: 806451.62 requests per second
SADD: 840336.12 requests per second
HSET: 746268.62 requests per second
SPOP: 1098901.12 requests per second
LPUSH (needed to benchmark LRANGE): 671140.94 requests per second
LRANGE_100 (first 100 elements): 26089.22 requests per second
LRANGE_300 (first 300 elements): 5534.65 requests per second
LRANGE_500 (first 450 elements): 3414.37 requests per second
LRANGE_600 (first 600 elements): 2345.11 requests per second
MSET (10 keys): 120048.02 requests per second
[root@localhost utils]# redis-benchmark -t set,lpush -n 100000 -q
##測(cè)試本機(jī)Redis服務(wù)在進(jìn)行set和lpush操作時(shí)的性能
SET: 166112.95 requests per second
LPUSH: 191570.88 requests per second
Redis數(shù)據(jù)庫(kù)數(shù)據(jù)類型
每個(gè)數(shù)據(jù)類型的創(chuàng)建key和查看key值都是不同的
String數(shù)據(jù)類型
[root@redis utils]# redis-cli
127.0.0.1:6379>
[root@redis utils]# redis-cli #查看所有的鍵
127.0.0.1:6379> keys *
1) "counter:__rand_int__"
2) "myset:__rand_int__"
3) "mylist"
4) "key:__rand_int__"
127.0.0.1:6379> keys m* #查看以m開(kāi)頭所有鍵
1) "myset:__rand_int__"
2) "mylist"
創(chuàng)建數(shù)據(jù),獲取數(shù)據(jù)
127.0.0.1:6379> set whd zhangsan #創(chuàng)建一個(gè)鍵whd,值為zhangsan
OK
127.0.0.1:6379> keys * #查看創(chuàng)建結(jié)果
1) "counter:__rand_int__"
2) "myset:__rand_int__"
3) "mylist"
4) "key:__rand_int__"
5) "whd"
127.0.0.1:6379> get whd #獲取鍵值
"zhangsan"
查看鍵是否存在
127.0.0.1:6379> exists whd #存在返回1,不存在返回為0
(integer) 1
127.0.0.1:6379> exists www
(integer) 0
刪除鍵
127.0.0.1:6379> del whd
(integer) 1
127.0.0.1:6379> exists whd
(integer) 0
查看鍵中value的數(shù)據(jù)類型
127.0.0.1:6379> set aaa bbb
OK
127.0.0.1:6379> type aaa
string
對(duì)鍵重命名
127.0.0.1:6379> rename aaa ccc
OK
127.0.0.1:6379> keys *
1) "counter:__rand_int__"
2) "myset:__rand_int__"
3) "mylist"
4) "key:__rand_int__"
5) "ccc"
##rename也可用來(lái)覆蓋鍵值
```bash
127.0.0.1:6379> get ccc
"bbb"
127.0.0.1:6379> set ddd fff #新建鍵ddd,值為fff
OK
127.0.0.1:6379> rename ccc ddd #將ccc值覆蓋ddd
OK
127.0.0.1:6379> get ddd #查看結(jié)果
"bbb"
##renamens,可以判斷重命名的新鍵名是否存在,存在則返回0不做操作,不存在則覆蓋并重命名
127.0.0.1:6379> set aaa bbb
OK
127.0.0.1:6379> renamenx ddd aaa
(integer) 0
查看當(dāng)前數(shù)據(jù)庫(kù)key的數(shù)目
127.0.0.1:6379> dbsize
(integer) 6
設(shè)置密碼,刪除密碼
127.0.0.1:6379> config set requirepass 123123 #設(shè)置新密碼
OK
127.0.0.1:6379> auth 123123 #認(rèn)證密碼
OK
127.0.0.1:6379> config get requirepass #查看密碼
1) "requirepass"
2) "123123"
[root@redis utils]# redis-cli -h 192.168.118.88 -p 6379 #此時(shí)可以登錄數(shù)據(jù)庫(kù),但是不能進(jìn)行操作
192.168.118.88:6379> keys *
(error) NOAUTH Authentication required.
192.168.118.88:6379> auth 123123 #進(jìn)行密碼認(rèn)證后才能操作
OK
192.168.118.88:6379> keys *
1) "counter:__rand_int__"
2) "aaa"
3) "ddd"
4) "myset:__rand_int__"
5) "mylist"
6) "key:__rand_int__"
192.168.118.88:6379> config set requirepass '' #刪除密碼
OK
追加數(shù)據(jù)
127.0.0.1:6379> keys *
1) "counter:__rand_int__"
2) "aaa"
3) "ddd"
4) "myset:__rand_int__"
5) "mylist"
6) "key:__rand_int__"
7) "www"
127.0.0.1:6379> get www
"10"
127.0.0.1:6379> append www 20 #append,追加數(shù)值
(integer) 4
127.0.0.1:6379> get www
"1020"
127.0.0.1:6379> append whd 23 #如果鍵不存在,append命令相當(dāng)于set創(chuàng)建鍵,并賦值
(integer) 2
127.0.0.1:6379> get whd
"23"
127.0.0.1:6379> strlen whd #strlen判斷鍵值得長(zhǎng)度
(integer) 2
key值遞增/遞減,incr/decr/incrby/decrby
127.0.0.1:6379> get whd
"23"
127.0.0.1:6379> incr whd #INCR遞增數(shù)值(key值必須為整數(shù))
(integer) 24
127.0.0.1:6379> incr whd
(integer) 25
127.0.0.1:6379> decr whd #DECR遞減數(shù)值(key值必須為整數(shù))
(integer) 24
127.0.0.1:6379> decr whd
(integer) 23
127.0.0.1:6379> incrby whd 10 #按照指定數(shù)值進(jìn)行遞增
(integer) 33
127.0.0.1:6379> get whd
"33"
127.0.0.1:6379> decrby whd 5 #按照指定數(shù)值進(jìn)行遞減
(integer) 28
127.0.0.1:6379>
getset返回原有值然后給key設(shè)置新值
127.0.0.1:6379> getset whd 22 #先返回原有key值50,然后給予key新值22(新的值不會(huì)打印顯示)
"50"
127.0.0.1:6379> get whd #查看key新的值
"22"
127.0.0.1:6379> getset whd 66
"22"
127.0.0.1:6379> get whd
"66"
setex支持key的過(guò)期時(shí)間
127.0.0.1:6379> setex ttt 10 66 #指定ttt10秒過(guò)期
OK
127.0.0.1:6379> ttl ttt #ttl可查看生命周期
(integer) 3
127.0.0.1:6379> ttl ttt #查出-2表示已經(jīng)過(guò)期,-1表示永久保存
(integer) -2
127.0.0.1:6379> get ttt
(nil)
127.0.0.1:6379> ttl whd
(integer) -1127.0.0.1:6379> setnx whd 22
(integer) 0
127.0.0.1:6379> setnx whd 22 #setnx可以對(duì)鍵進(jìn)行判斷,有則操作無(wú)效,無(wú)則創(chuàng)建
(integer) 0
批量創(chuàng)建,批量查看
127.0.0.1:6379> mset aa 10 bb 20 cc 30
OK
127.0.0.1:6379> keys *
1) "counter:__rand_int__"
2) "cc"
3) "myset:__rand_int__"
4) "whd"
5) "aa"
6) "key:__rand_int__"
7) "mylist"
8) "bb"
127.0.0.1:6379> mget aa bb cc
1) "10"
2) "20"
3) "30"
127.0.0.1:6379> msetnx aa 10 jj 10 dd 10 #msetnx可進(jìn)行判斷,只要有一個(gè)鍵存在,則操作失效,當(dāng)鍵都不存在才創(chuàng)建key
(integer) 0
127.0.0.1:6379> msetnx jj 10 dd 10
(integer) 1
List數(shù)據(jù)類型
127.0.0.1:6379> lpush age a b c d e #lpush由左插入多個(gè)鍵值,
(integer) 5
127.0.0.1:6379> lrange age 0 -1
#lrange查看list數(shù)據(jù)類型的key值,后面要加查看的范圍,這里0表示第一個(gè)數(shù),-1表示最后一個(gè)數(shù)(也可以輸入key值個(gè)數(shù)),
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
127.0.0.1:6379> lrange age 1 2
1) "d"
2) "c"
127.0.0.1:6379> lrange age 3 5
1) "b"
2) "a"
127.0.0.1:6379> lpushx age g #lpushx插入一個(gè)元素在一個(gè)已存在的key的開(kāi)頭
(integer) 6
127.0.0.1:6379> lrange age 0 -1
1) "g"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> lpop age #lpop移除首個(gè)元素
"g"
127.0.0.1:6379> lrange age 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
127.0.0.1:6379> lpop age
"e"
127.0.0.1:6379> lrange age 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> llen age #獲取key值個(gè)數(shù)
(integer) 4
LREM/LSET/LINDEX/LTRIM
127.0.0.1:6379> del age
(integer) 1
127.0.0.1:6379> lpush age a b c d d a c
(integer) 7
127.0.0.1:6379> lrange age 0 -1
1) "c"
2) "a"
3) "d"
4) "d"
5) "c"
6) "b"
7) "a"
127.0.0.1:6379> lrem age 1 a #指定刪除從開(kāi)頭開(kāi)始n個(gè)重復(fù)值
(integer) 1
127.0.0.1:6379> lrange age 0 -1
1) "c"
2) "d"
3) "d"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> lrem age 2 c
(integer) 2
127.0.0.1:6379> lrange age 0 -1
1) "d"
2) "d"
3) "b"
4) "a"
127.0.0.1:6379> lindex age 1 #獲取索引值對(duì)應(yīng)的key值,索引值從上往下從0開(kāi)始
"d"
127.0.0.1:6379> lindex age 3
"a"
127.0.0.1:6379> lset age 1 a #基于已有的索引值更換key值
OK
127.0.0.1:6379> lset age 3 c
OK
127.0.0.1:6379> lrange age 0 -1
1) "d"
2) "a"
3) "b"
4) "c"
127.0.0.1:6379> lrange whd1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "c"
6) "b"
7) "b"
127.0.0.1:6379> ltrim whd1 0 3 #僅保留索引范圍的元素
OK
127.0.0.1:6379> lrange whd1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
在指定元素的左/右插入元素
127.0.0.1:6379> linsert whd1 before a a1 #在a的前面插入元素a1
(integer) 5
127.0.0.1:6379> lrange whd1 0 -1
1) "a1"
2) "a"
3) "b"
4) "c"
5) "d"
127.0.0.1:6379> linsert whd1 after a a2 #在a的后面插入元素a2
(integer) 6
127.0.0.1:6379> lrange whd1 0 -1
1) "a1"
2) "a"
3) "a2"
4) "b"
5) "c"
6) "d"
由右插入元素
127.0.0.1:6379> rpush whd2 a b c d e
(integer) 5
127.0.0.1:6379> lrange whd2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> rpushx whd2 a1 #在最后插入元素
(integer) 6
127.0.0.1:6379> lrange whd2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "a1"
127.0.0.1:6379> rpop whd2 #移除最后一個(gè)元素
"a1"
127.0.0.1:6379> lrange whd2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> rpoplpush whd2 whd2 #組合使用,右彈出左插入,相當(dāng)于把原key值最后一個(gè)元素插入到目標(biāo)key值得最前面
"e"
127.0.0.1:6379> lrange whd2 0 -1
1) "e"
2) "a"
3) "b"
4) "c"
5) "d"
127.0.0.1:6379> rpoplpush whd2 whd1
"d"
127.0.0.1:6379> lrange whd1 0 -1
1) "d"
2) "a1"
3) "a"
4) "a2"
5) "b"
6) "c"
7) "d"
Hash(散列)數(shù)據(jù)類型
hash用于存儲(chǔ)對(duì)象,可以采用hash格式(對(duì)象列別和ID)構(gòu)成鍵名
127.0.0.1:6379> hset caiwu name "lisi" #創(chuàng)建鍵,設(shè)置字段為name,值為lisi
(integer) 1
127.0.0.1:6379> hget caiwu name
"lisi"
127.0.0.1:6379> hset caiwu name "wangwu" #為該鍵添加字段name1,值為wangwu
(integer) 0
127.0.0.1:6379> hset caiwu name1 "wangwu"
(integer) 1
127.0.0.1:6379> hexists caiwu name #判斷caiwu鍵中name字段是否存在
(integer) 1
127.0.0.1:6379> hlen caiwu #查看key值里面右多少個(gè)字段
(integer) 2
127.0.0.1:6379> hdel caiwu name #刪除字段
(integer) 1
127.0.0.1:6379> hexists caiwu name
(integer) 0
127.0.0.1:6379> hsetnx caiwu name "aa" #添加字段
(integer) 1
127.0.0.1:6379> hget caiwu name
"aa"
127.0.0.1:6379> hset caiwu name2 2
(integer) 1
127.0.0.1:6379> hincrby caiwu name2 2 #遞增字段值
(integer) 4
127.0.0.1:6379> hincrby caiwu name2 -2 #遞減字段值
(integer) 2
127.0.0.1:6379> hgetall caiwu #查看key中所有信息
1) "name1"
2) "wangwu"
3) "name"
4) "aa"
5) "name2"
6) "2"
127.0.0.1:6379> hmget caiwu name name1 #查看key的多個(gè)字段值
1) "aa"
2) "wangwu"
127.0.0.1:6379> hkeys caiwu #查看鍵的多個(gè)字段
1) "name1"
2) "name"
3) "name2"
127.0.0.1:6379> hvals caiwu #查看鍵中所有的字段值
1) "wangwu"
2) "aa"
3) "2"
set數(shù)據(jù)類型(無(wú)序集合)
元素具有唯一性,不允許存在重復(fù)的成員,多個(gè)集合類型之間可以進(jìn)行并集、交集和差集運(yùn)算
127.0.0.1:6379> keys *
1) "counter:__rand_int__"
2) "myset:__rand_int__"
3) "key:__rand_int__"
4) "mylist"
5) "caiwu"
127.0.0.1:6379> sadd whd a b c d #添加鍵,設(shè)置鍵值
(integer) 4
127.0.0.1:6379> smembers whd #查看鍵值
1) "a"
2) "c"
3) "b"
4) "d"
127.0.0.1:6379> scard whd #查看key值個(gè)數(shù)
(integer) 4
127.0.0.1:6379> sismember whd a #判斷key值是否存在,存在則返回1,不存在則返回0
(integer) 1
127.0.0.1:6379> sismember whd g
(integer) 0
127.0.0.1:6379> srandmember whd #srandmember表示隨機(jī)返回一個(gè)成員
"b"
127.0.0.1:6379> srandmember whd
"a"
隨機(jī)移除鍵值
127.0.0.1:6379> spop whd #隨機(jī)移除數(shù)值,后面不加參數(shù)則默認(rèn)移除一個(gè),可以添加數(shù)值,表示移除該數(shù)值個(gè)數(shù)的元素
"a"
127.0.0.1:6379> smembers whd
1) "c"
2) "b"
3) "d"
127.0.0.1:6379> spop whd 2
1) "d"
2) "b"
127.0.0.1:6379> smembers whd
1) "c"
127.0.0.1:6379> sadd whd a b e f #添加元素,有重復(fù)值不會(huì)插入
(integer) 4
127.0.0.1:6379> smembers whd
1) "a"
2) "e"
3) "b"
4) "c"
5) "f"
127.0.0.1:6379> srem whd a e b #移除指定元素
(integer) 3
127.0.0.1:6379> smembers whd
1) "f"
2) "c"
127.0.0.1:6379> sadd whd1 a b #設(shè)置新鍵
(integer) 2
127.0.0.1:6379> smove whd whd1 c #講whd中的c移動(dòng)到whd1中
(integer) 1
127.0.0.1:6379> smembers whd
1) "f"
127.0.0.1:6379> smembers whd1
1) "a"
2) "c"
3) "b"
Sorted Set 數(shù)據(jù)類型(有序集合)
元素類型為String,元素具有唯一性,不能重復(fù),每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)score(表示權(quán)重),可以通過(guò)權(quán)重的大小排序,元素的score可以相同,可以用于在線游戲的積分排行榜
127.0.0.1:6379> zadd whd 1 "zhansan" #添加一個(gè)數(shù)值為1的成員zhansan
(integer) 1
127.0.0.1:6379> zadd whd 2 "lisi" 3 "wangwu" #添加兩個(gè)成員,對(duì)應(yīng)數(shù)值為2,3
(integer) 2
127.0.0.1:6379> zrange whd 0 -1 #查看whd的各元素值
1) "zhansan"
2) "lisi"
3) "wangwu"
127.0.0.1:6379> zrange whd 0 -1 WITHSCORES #WITHSCORES表示返回的結(jié)果中包含每個(gè)成員及其分?jǐn)?shù),否則返回成員
1) "zhansan"
2) "1"
3) "lisi"
4) "2"
5) "wangwu"
6) "3"
127.0.0.1:6379> zrank whd "zhansan" #獲取成員對(duì)應(yīng)的位置索引,0代表第一個(gè),nil表示不存在
(integer) 0
127.0.0.1:6379> zrank whd "lisi"
(integer) 1
127.0.0.1:6379> zcard whd #查看成員數(shù)
(integer) 3
127.0.0.1:6379> zcount whd 2 3 #分?jǐn)?shù)滿足表達(dá)式2= score =3的成員數(shù)量
(integer) 2
127.0.0.1:6379> zcount whd 1 2
(integer) 2
127.0.0.1:6379> zrem whd lisi #刪除指定成員
(integer) 1
127.0.0.1:6379> zrange whd 0 -1
1) "zhansan"
2) "wangwu"
127.0.0.1:6379> zscore whd zhansan #返回成員所對(duì)應(yīng)的分?jǐn)?shù)
"1"
127.0.0.1:6379> zrange whd 0 -1 WITHSCORES
1) "zhansan"
2) "1"
3) "wangwu"
4) "3"
127.0.0.1:6379> zincrby whd 5 zhansan #為成員的分?jǐn)?shù)增加指定值
"6"
127.0.0.1:6379> zrange whd 0 -1 WITHSCORES
1) "wangwu"
2) "3"
3) "zhansan"
4) "6"
127.0.0.1:6379> zadd whd 2 zhansan #添加已有成員設(shè)置分?jǐn)?shù)時(shí),會(huì)覆蓋原因成員和分?jǐn)?shù),并返回為0.表示沒(méi)有增加元素,但不表示沒(méi)有修改
(integer) 0
127.0.0.1:6379> zrange whd 0 -1 WITHSCORES
1) "zhansan"
2) "2"
3) "wangwu"
4) "3"
127.0.0.1:6379> zrangebyscore whd 1 2 #獲取分?jǐn)?shù)滿足1=score=2的成員
1) "zhansan"
2) "lisi"
127.0.0.1:6379> zrange whd 0 -1
1) "lisi"
2) "zhansan"
3) "xuyi"
4) "wangwu"
127.0.0.1:6379> zrangebyscore whd -inf +inf limit 1 3
#-inf表示第一個(gè)成員,+inf表示最后一個(gè)成員,這里表示匹配所有成員,然后limit顯示索引1后面的三個(gè)成員
1) "zhansan"
2) "xuyi"
3) "wangwu"
127.0.0.1:6379> zremrangebyrank whd 0 1 #刪除位置索引滿足表達(dá)式0=rank=1的元素
(integer) 2
127.0.0.1:6379> zcard whd
(integer) 2
127.0.0.1:6379> zrange whd 0 -1
1) "xuyi"
2) "wangwu"
排序
127.0.0.1:6379> zadd whd1 1 a 2 b 3 d 4 e
(integer) 4
127.0.0.1:6379> zrevrange whd 0 -1 withscores
1) "wangwu"
2) "3"
3) "xuyi"
4) "2"
127.0.0.1:6379> zrevrange whd1 0 -1 withscores #以位置索引從高到低顯示區(qū)間的值
1) "e"
2) "4"
3) "d"
4) "3"
5) "b"
6) "2"
7) "a"
8) "1"
到此這篇關(guān)于Redis數(shù)據(jù)庫(kù)安裝部署及基本操作的文章就介紹到這了,更多相關(guān)Redis安裝部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- linux環(huán)境部署及docker安裝redis的方法
- scrapy-redis的安裝部署步驟講解
- 詳解在Redis在Centos7上的安裝部署
- Linux下Redis的安裝和部署
- Redis基本知識(shí)、安裝、部署、配置筆記