环境安装
# yum install centos-release-scl
# yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
安装 redis6
# wget http://download.redis.io/releases/redis-6.0.6.tar.gz
# tar -zxvf redis-6.0.6.tar.gz
# cd redis-6.0.6
# make
启动 redis,进入到解压后的 src 目录,通过如下命令启动Redis
# src/redis-server
您可以使用内置的客户端与Redis进行交互
# src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar
1、进入 redis 目录,编辑 redis.conf
2、搜索 “daemonized” 并设置为
daemonized yes
3、开启后台运行
cd src
redis-server ../redis.conf
4、查看是否在后台运行
ps -aux | grep redis
搜索 loglevel,可修改为(debug | verbose | notice | warning )
loglevel warning
搜索 databases
databases 16
默认持久化存储的路径为 ~/redis-5.0.4/src/dum.rdb
rdbcompression yes # 压缩RDB文件
rdbchecksum yes # 对 RDB 文件进行校验
dbfilename dump.rdb # RDB数据文件的文件名
dir /var/local/redis # RDB 文件保存的目录
save 语句的含义
save 900 1 —— 触发 save 命令的两个条件:
- 900 秒
- 1次修改
当两个条件同时满足时,数据从内存写入一次硬盘
save 900 1
save 300 10
save 60 10000
AOF(Append only file)持久化,将修改的每一条指令记录进 appendonly.aof中,默认关闭。
适用于增量数据,数据不丢失。但是文件体积大,恢复时间长
appendonly yes
appendfsync always # 每次有新命令加到 aof 文件时就执行一个持久化,非常慢 但是安全
appendfsync everysec # 每秒执行一次持久化,足够快,并且只会丢失1秒数据
appendfsync no # 从不持久化
学习网址
含义:Redis是 Remote dictionary server 的缩写,它是一个用ANSI C 编写的高性能的 key-value 存储系统,与其他的 key-value 存储系统相比,具有以下几个特点
- 读写性能极高,qps( query per second )可达到 11万
- 具有丰富的特性(发布/订阅、事务、通知等)
- 支持多种数据类型,包括 string、hash、list、set、zset、bitmap、hyperloglog 等,并且支持持久化存储
- 支持主从复制(读写分离)以及哨兵模式(监控master是否宕机并自动调整配置)
- 支持分布式集群,很容易通过水平扩展来提升系统性能
- 网络传输基于 TCP 进行通信
设置字符串
set key value
> set name zhangsan
# 具有过期时间(以秒为单位)的字符串
set key value ex seconds
>set name zhangsan ex 10
# 具有过期时间(以毫秒为单位)的字符串
set key value px milliseconds
# 只有在 key 不存在时,才设置 key
set key value nx
>set name zhangsan nx
>set name lisi nx
# 只有在 key 存在时,才设置 key
set key value xx
>set name zhangsan
>set name lisi xx
# 同时设置多个变量
mset key1 value1 key2 value2 key3 value3
>mset name zhangsan age 18 sal 30000
读取变量
get key
# 获取多个变量
mget key1 key2 key3…
>mget name age sal
获取变量的剩余时间
ttl key
>set name zhangsan ex 10
>ttl name
获取所有key
keys *
数值自增
# 数值加1
incr number_key
>incr age
# 数值加 n
incrby number_key n
>incrby age 10
# 简单的哈希表
hset dict_name key1 value1 key2 value2 key3 value3
# 向哈希表中插值
hset dict_name key1 value1 key3 value3
# 从哈希表中取值
hget dict_name key1
# 是否存在某键
hexists dict_name key1 —— 存在返回 true,否则返回 false
# 删除某建
hdel dict_name key1
# 字典长度
hlen dict_name
# 字典中键对应的值的长度
hstrlen dict_name key1
# 获取所有的键
hkeys dict_name
# 获取所有的值
hvals dict_name
# 获取所有键、值
hgetall dict_name
# 从左侧插入(开始或头部),如下则插入顺序为 value1, value2, value3,列表中元素的顺序为 value3, value2, value1
lpush list_name value1 value2 value3
# 从右侧插入
rpush list_name value1 value2 value3
# 获取列表切片,0开始,-1最后一个
lrange list_name start_index end_index
# 左侧弹出数据
lpop list_name
# 右侧弹出数据
rpop list_name
# 从左侧开始数(最左侧索引为0),修改元素值
lset list_name ele_index new_value
# 添加元素
sadd set_name value1 value2 value3
# 元素是否在集合中
sismember set_name value
# 集合中随机取n个取值
srandmember set_name value
# 获取所有元素
smembers set_name
# 获取 集合1 - 集合2 的剩余元素
sdiff set1 set2
# 合并集合
sunion set1 set2
# 求集合交集
sinter set1 set2
# 创建有序集合
zadd orderd_set_name oder_key1 value1 oder_key2 value2 oder_key3 value3 oder_key4 value4 oder_key5 value5
含义:order_key 是对集合排序时的依据,越小越靠前
# 获取值
zrange orderd_set_name start_index end_index
# 获取某值的位置索引
zrank orderd_set_name value
1、开放端口 6379
# firewall-cmd --zone=public --add-port=6379/tcp --permanent
# firewall-cmd --reload
2、修改 redis.conf 中的 bind 127.0.0.1 为 0.0.0.0 或者注释掉该行
# vim redis.conf
安装 redis 库
pip install -i https://pypi.douban.com/simple redis
读取数据
import redis
client = redis.Redis(host="192.168.1.79", port="6379")
res = client.get("name").decode("utf-8")
print(res)
res = client.hgetall("emp")
print(res)