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