一、Redis的安装
[root@192 ~]# clear
[root@192 ~]# cd /usr/local/src
[root@192 src]# rz
[root@192 src]# ls
redis-5.0.7.tar.gz
[root@192 src]# tar -xzvf redis-5.0.7.tar.gz
[root@192 src]# yum install -y install
[root@192 src]# cd redis-5.0.7
[root@192 redis-5.0.7]# make PREFIX=/usr/local/redis-5.0.7 install
[root@192 redis-5.0.7]# cp /usr/local/src/redis-5.0.7/redis.conf /usr/local/redis-5.0.7/bin
[root@192 redis-5.0.7]# cd /usr/local/redis-5.0.7/bin
[root@192 bin]# ./redis-server ./redis.conf &
[1] 5465
[root@192 bin]# 5465:C 27 Feb 2020 23:45:53.058 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
5465:C 27 Feb 2020 23:45:53.058 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=5465, just started
5465:C 27 Feb 2020 23:45:53.058 # Configuration loaded
5465:M 27 Feb 2020 23:45:53.058 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 5.0.7 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 5465
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
5465:M 27 Feb 2020 23:45:53.059 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5465:M 27 Feb 2020 23:45:53.059 # Server initialized
5465:M 27 Feb 2020 23:45:53.059 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
5465:M 27 Feb 2020 23:45:53.059 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
5465:M 27 Feb 2020 23:45:53.059 * Ready to accept connections
二、Redis的使用
# 启动 Redis 客户端
[root@192 bin]# ls
redis-benchmark redis-check-rdb redis.conf redis-server
redis-check-aof redis-cli redis-sentinel
[root@192 bin]# ./redis-cli
# 背景介绍
# Redis的数据结构为Key-Value,其中Key都是字符串,而Value有五种不同的数据结构
# 1) 字符串类型 string;
# 2) 哈希类型 hash: map格式;
# 3) 列表类型 list: linkedlist格式,支持重复元素;
# 4) 集合类型 set : 不允许重复元素;
# 5) 有序集合类型 sortedset: 不允许重复元素,且元素有顺序;
# 1.字符串类型 string
# 1.1 存储string: set key value
127.0.0.1:6379> set string redis
OK
# 1.2 获取string: get key
127.0.0.1:6379> get string
"redis"
# 1.3 删除string: del key
127.0.0.1:6379> del string
(integer) 1
# 2.哈希类型 hash:
# 2.1 存储hash: hset key field value
127.0.0.1:6379> hset hash class 043
(integer) 1
127.0.0.1:6379> hset hash name GDP
(integer) 1
# 2.2 获取hash
# 2.2.1 获取指定的field对应的值: hget key field
127.0.0.1:6379> hget hash class
"043"
# 2.2.2 获取所有的field和value
127.0.0.1:6379> hgetall hash
1) "class"
2) "043"
3) "name"
4) "GDP"
# 2.3 删除hash: hdel key field
127.0.0.1:6379> hdel hash class
(integer) 1
# 3.列表类型list
# 3.1 添加list
# 3.1.1 将元素加入列表左表: lpush key value
127.0.0.1:6379> lpush list a
(integer) 1
127.0.0.1:6379> lpush list b
(integer) 2
127.0.0.1:6379> lpush list c
(integer) 3
# 3.1.2 将元素加入列表右表: rpush key value
127.0.0.1:6379> rpush list d
(integer) 4
127.0.0.1:6379> rpush list d
(integer) 5
# 3.2 获取list: lrange key start end
127.0.0.1:6379> lrange list 0 -1
1) "c"
2) "b"
3) "a"
4) "d"
5) "d"
# 3.3 删除list
# 3.3.1 删除列表左边的元素,并将元素返回: lpop key
127.0.0.1:6379> lpop list
"c"
# 3.3.2 删除列表右边的元素,并将元素返回: rpop key
127.0.0.1:6379> rpop list
"d"
# 4. 集合类型set:(不允许重复元素)
# 4.1 存储set: sadd key value
127.0.0.1:6379> sadd set a
(integer) 1
127.0.0.1:6379> sadd set b
(integer) 1
127.0.0.1:6379> sadd set c
(integer) 1
# 4.2 获取set集合中所有元素: smembers key
127.0.0.1:6379> smembers set
1) "c"
2) "a"
3) "b"
# 4.3 删除set集合中指定的某个元素: srem key value
127.0.0.1:6379> srem set a
(integer) 1
# 5. 有序集合类型 sortedset: 不允许重复元素,且元素有顺序,每个元素都会关联一个double类型的分数,redis根据这个分数来为集合中的成员进行从小到大的排序.
# 5.1 存储sortedset: zadd key score value
127.0.0.1:6379> zadd sortedset 97 a
(integer) 1
127.0.0.1:6379> zadd sortedset 98 b
(integer) 1
127.0.0.1:6379> zadd sortedset 99 c
(integer) 1
# 5.2 获取sortedset: zrange key start end [withscores]
127.0.0.1:6379> zrange sortedset 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> zrange sortedset 0 -1 withscores
1) "a"
2) "97"
3) "b"
4) "98"
5) "c"
6) "99"
# 5.3 删除sortedset: zrem key value
127.0.0.1:6379> zrem sortedset b
(integer) 1
# 6. 通用命令:
# 6.1 keys *: 查询所有键;
# 6.2 type key: 获取键对应的value类型;
# 6.3 del key: 删除指定的key value
二、Redis配置文件
# Redis是内存数据库,一旦电脑重启,则所有数据丢失,但可以修改配置文件来持久化该数据库的存储于硬盘中
# 1. RDB: 默认使用该方式进行持久化,即在一定的时间间隔内,检测到key的变化情况,然后持久化数据
# 1.1 redis.conf文件的配置
# after 900 sec (15 min) if at least 1 key changed
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
save 300 10
# after 60 sec if at least 10000 keys changed
save 60 10000
# 1,2 重启该服务器并指定配置文件的名称
[root@192 ~]# cd /usr/local/redis-5.0.7/bin
[root@192 bin]# ls
dump.rdb redis-check-aof redis-cli redis-sentinel
redis-benchmark redis-check-rdb redis.conf redis-server
[root@192 bin]# ./redis-server redis.conf
# AOF: 日志记录的方式,可以记录每一条命令的操作,在每一次命令操作后持久化数据
# 2.1 redis.conf文件的配置
appendonly no(关闭aof) --> appendonly yes (开启aof)
# appendfsync always : 每一次操作都进行持久化
appendfsync everysec : 每隔一秒进行一次持久化
# appendfsync no : 不进行持久化
作者:脚踏实地的理想主义者