天天看點

Redis五種資料類型的基本使用及使用場景

CentOS下安裝Redis

下載下傳fedora的epel倉庫

yum install epel-release -y           

安裝redis

yum install redis -y           

啟動redis服務

systemctl start redis           

檢視redis狀态

systemctl status redis           

停止redis服務

systemctl stop redis           

重新開機redis服務

systemctl restart redis           

檢視redis程序

ps -ef | grep redis           

設定redis開機自啟動

systemctl enable redis           

String資料類型

String基本使用

1. 增

set指令給key設定value

127.0.0.1:6379> set name buddha
OK           

2. 删

del指令删除key-value

127.0.0.1:6379> del name
(integer) 1           

3. 改

set指令覆寫之前操作

127.0.0.1:6379> get name
(nil)

127.0.0.1:6379> set name jack
OK

127.0.0.1:6379> get name
"jack"

127.0.0.1:6379> set name buddha
OK

127.0.0.1:6379> get name
"buddha"           

4. 查

get指令取值,不存在傳回nil

127.0.0.1:6379> get name
"buddha"

127.0.0.1:6379> get age
(nil)           

5. string類型其它用法

getset,擷取key值後給key指派

127.0.0.1:6379> getset age 18
(nil)

127.0.0.1:6379> get age
"18"           

incr,累加1

127.0.0.1:6379> incr num
(integer) 1

127.0.0.1:6379> get num
"1"

127.0.0.1:6379> incr num
(integer) 2

127.0.0.1:6379> get num
"2"           

decr,遞減1

127.0.0.1:6379> set num 10
OK

127.0.0.1:6379> get num
"10"

127.0.0.1:6379> decr num
(integer) 9

127.0.0.1:6379> get num
"9"           

incrby,按照x值累加

127.0.0.1:6379> incrby num 2
(integer) 2

127.0.0.1:6379> get num
"2"

127.0.0.1:6379> incrby num 2
(integer) 4

127.0.0.1:6379> get num
"4"           

decrby,按照x值遞減

127.0.0.1:6379> decrby num 2

(integer) -2

127.0.0.1:6379> decrby num 2

(integer) -4

127.0.0.1:6379> get num

"-4"           

append,在key的value後面追加

127.0.0.1:6379> set num 0
OK

127.0.0.1:6379> append num 2
(integer) 2

127.0.0.1:6379> get num
"02"

127.0.0.1:6379> append num 2
(integer) 3

127.0.0.1:6379> get num
"022"           

setex,給key設定過期時間

127.0.0.1:6379> setex code 60 424119
OK

127.0.0.1:6379> get code
"424119"

127.0.0.1:6379> get code
(nil)           

String使用場景

- 資料緩存

- 網站文章總數

- 商品總數

- 訂單總數

- 計數器

- 粉絲數

- 關注人數

- 驗證碼

- token存儲

- ......           

Hash資料類型

Hash基本使用

hset和hget,設定x對象鍵值對和擷取x對象鍵值對的值

127.0.0.1:6379> hset zs name zhangsan
(integer) 1

127.0.0.1:6379> hset zs age 20
(integer) 1

127.0.0.1:6379> hset zs height 180
(integer) 1

127.0.0.1:6379> hset zs sex 1
(integer) 1

127.0.0.1:6379> hget zs name
"zhangsan"

127.0.0.1:6379> hget zs age
"20"

127.0.0.1:6379> hget zs height
"180"

127.0.0.1:6379> hget zs sex
"1"           

hmset和hmget,設定x對象多個鍵值對和擷取x對象多個鍵值對的值

127.0.0.1:6379> hmset ls name lisi age 24 height 178 sex 1
OK

127.0.0.1:6379> hmget ls name age height sex
1) "lisi"
2) "24"
3) "178"
4) "1"           

hkeys和hvals,擷取x對象所有鍵和擷取x對象所有值

127.0.0.1:6379> hkeys ls
1) "name"
2) "age"
3) "height"
4) "sex"

127.0.0.1:6379> hvals ls
1) "lisi"
2) "24"
3) "178"
4) "1"           

Hash使用場景

- 資料庫整張表放到redis hash裡面           

List資料類型

List基本使用

lpush和lpop,左邊入隊和左邊出隊

127.0.0.1:6379> lpush list a b c
(integer) 3

127.0.0.1:6379> lpop list
"c"           

rpush和rpop,右邊入隊和右邊出隊

127.0.0.1:6379> rpush list 1 2 3
(integer) 5

127.0.0.1:6379> rpop list
"3"           

lrange,檢視清單

127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "a"
3) "1"
4) "2"           

llen,清單元素個數

127.0.0.1:6379> llen list
(integer) 4           

List使用場景

- 秒殺

- 消息           

Set資料類型

Set基本使用

sadd和smembers,添加元素和查詢元素

127.0.0.1:6379> sadd group_01 zs ls we mz
(integer) 4

127.0.0.1:6379> sadd group_02 zs ls xc xq
(integer) 4

127.0.0.1:6379> smembers group_01
1) "mz"
2) "we"
3) "zs"
4) "ls"

127.0.0.1:6379> smembers group_02
1) "xc"
2) "zs"
3) "xq"
4) "ls"           

sdiff,差集

127.0.0.1:6379> sdiff group_01 group_02
1) "mz"
2) "we"

127.0.0.1:6379> sdiff group_02 group_01
1) "xc"
2) "xq"           

sinter,交集

127.0.0.1:6379> sinter group_01 group_02
1) "zs"
2) "ls"           

sunion,并集

127.0.0.1:6379> sunion group_01 group_02
1) "we"
2) "xc"
3) "mz"
4) "zs"
5) "ls"
6) "xq"           

scard,檢視集合元素個數

127.0.0.1:6379> scard group_01
(integer) 4

127.0.0.1:6379> scard group_02
(integer) 4           

srandmember,随機提取元素

127.0.0.1:6379> srandmember group_01
"mz"

127.0.0.1:6379> srandmember group_01
"ls"           

srem,删除集合元素

127.0.0.1:6379> srem group_01 we
(integer) 1           

Set使用場景

- 唯一性資料           

sorted-set資料類型

sorted-set基本使用

zadd,添加元素

127.0.0.1:6379> zadd sorted 85 xiaoming
(integer) 1

127.0.0.1:6379> zadd sorted 88 xiaofang 90 xiaocheng
(integer) 2           

zscore,擷取x元素

127.0.0.1:6379> zscore sorted xiaoming

"85"           

zcard,擷取元素個數

127.0.0.1:6379> zcard sorted
(integer) 3           

zrange,範圍查詢,由小到大

127.0.0.1:6379> zrange sorted 0 -1
1) "xiaoming"
2) "xiaofang"
3) "xiaocheng"           

zrevrange,範圍查詢,由大到小

127.0.0.1:6379> zrangebyscore sorted 88 100 withscores
1) "xiaofang"
2) "88"
3) "xiaocheng"
4) "90"           

sorted-set使用場景

- 唯一性資料+排序           

Redis持久化

持久化,就是防止redis在記憶體中出現意外丢失了資料,想恢複回去做的備份。

1. 找到redis.conf配置檔案

[root@localhost ~]# systemctl status redis

● redis.service - Redis persistent key-value database

Loaded: loaded (/usr/lib/systemd/system/redis.service;           
[root@localhost ~]# cat /usr/lib/systemd/system/redis.service

[Service]

ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd           

2. 持久化檔案的查找

[root@localhost ~]# find / -name dump.rdb

/var/lib/redis/dump.rdb

[root@localhost ~]# find / -name appendonly.aof

/var/lib/redis/appendonly.aof           

3. aof持久化檔案修複

redis-check-aof --fix appendonly.aof           

4. 定時任務定時備份rdb和aof檔案,以防不時之需

繼續閱讀