天天看点

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文件,以防不时之需

继续阅读