Redis

Redis

  • 安装与配置
    • centos7
      • Redis配置(redis.conf) —— 开启后台运行
      • Redis配置(redis.conf) —— 日志级别
      • Redis配置(redis.conf) —— 数据库数量
      • Redis配置(redis.conf) —— 持久化
        • RDB方案
          • Redis配置(redis.conf) —— 配置数据写入规则
        • AOF方案
  • 基础
    • 基本概念
    • 数据操作
      • 字符串
      • 哈希表
      • 列表
      • 集合
      • 有序集合
    • 开启远程访问
  • python调用
    • 基础

 
 
 
 
 
 
 
 

安装与配置


 

centos7

环境安装

# 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_第1张图片

 

您可以使用内置的客户端与Redis进行交互

# src/redis-cli
 
redis> set foo bar
OK
redis> get foo
"bar
在这里插入图片描述
 
 
 
 

Redis配置(redis.conf) —— 开启后台运行

1、进入 redis 目录,编辑 redis.conf
Redis_第2张图片

 
 

2、搜索 “daemonized” 并设置为

daemonized yes

Redis_第3张图片
Redis_第4张图片

 
 

3、开启后台运行

cd src
 
redis-server ../redis.conf

Redis_第5张图片

 
 

4、查看是否在后台运行

ps -aux | grep redis

Redis_第6张图片

 
 
 
 

Redis配置(redis.conf) —— 日志级别

搜索 loglevel,可修改为(debug | verbose | notice | warning )

loglevel warning

Redis_第7张图片

 
 
 
 

Redis配置(redis.conf) —— 数据库数量

搜索 databases

databases 16

Redis_第8张图片

 
 
 
 

Redis配置(redis.conf) —— 持久化

 
 

RDB方案

默认持久化存储的路径为 ~/redis-5.0.4/src/dum.rdb

rdbcompression yes # 压缩RDB文件
rdbchecksum yes # 对 RDB 文件进行校验
dbfilename dump.rdb # RDB数据文件的文件名
dir /var/local/redis # RDB 文件保存的目录

Redis_第9张图片
Redis_第10张图片

 
 
 
 

Redis配置(redis.conf) —— 配置数据写入规则

save 语句的含义

save 900 1 —— 触发 save 命令的两个条件:

  • 900 秒
  • 1次修改
     

当两个条件同时满足时,数据从内存写入一次硬盘

  • 900秒内修改过1个key,写入一次数据库

save 900 1

 
 

  • 300秒内修改过10个key,写入一次数据库

save 300 10

 
 

  • 60秒内修改过10000个key,写入一次数据库

save 60 10000

Redis_第11张图片

 
 

AOF方案

AOF(Append only file)持久化,将修改的每一条指令记录进 appendonly.aof中,默认关闭。

适用于增量数据,数据不丢失。但是文件体积大,恢复时间长

Redis_第12张图片

appendonly yes
appendfsync always # 每次有新命令加到 aof 文件时就执行一个持久化,非常慢 但是安全
appendfsync everysec # 每秒执行一次持久化,足够快,并且只会丢失1秒数据
appendfsync no # 从不持久化

 
 
 
 
 
 
 
 

基础


学习网址

  • http://redisdoc.com/ —— 中文参考
  • https://redis.io/documentation —— 官方参考

 

基本概念

含义: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
Redis_第13张图片
 
# 具有过期时间(以毫秒为单位)的字符串
set key value px milliseconds
在这里插入图片描述
# 只有在 key 不存在时,才设置 key
set key value nx
>set name zhangsan nx
>set name lisi nx
Redis_第14张图片
# 只有在 key 存在时,才设置 key
set key value xx
>set name zhangsan
>set name lisi xx
Redis_第15张图片
# 同时设置多个变量
mset key1 value1 key2 value2 key3 value3
>mset name zhangsan age 18 sal 30000
Redis_第16张图片

读取变量

get key
 
# 获取多个变量
mget key1 key2 key3…
>mget name age sal
在这里插入图片描述

获取变量的剩余时间

ttl key
>set name zhangsan ex 10
>ttl name
Redis_第17张图片

获取所有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
Redis_第18张图片

 
 

列表

# 从左侧插入(开始或头部),如下则插入顺序为 value1, value2, value3,列表中元素的顺序为 value3, value2, value1
lpush list_name value1 value2 value3
Redis_第19张图片
 
# 从右侧插入
rpush list_name value1 value2 value3
Redis_第20张图片
 
# 获取列表切片,0开始,-1最后一个
lrange list_name start_index end_index
 
# 左侧弹出数据
lpop list_name
Redis_第21张图片
# 右侧弹出数据
rpop list_name
在这里插入图片描述
# 从左侧开始数(最左侧索引为0),修改元素值
lset list_name ele_index new_value
Redis_第22张图片

 
 

集合

# 添加元素
sadd set_name value1 value2 value3
在这里插入图片描述
 
# 元素是否在集合中
sismember set_name value
在这里插入图片描述
 
# 集合中随机取n个取值
srandmember set_name value
Redis_第23张图片
# 获取所有元素
smembers set_name
在这里插入图片描述
 
# 获取 集合1 - 集合2 的剩余元素
sdiff set1 set2
Redis_第24张图片
# 合并集合
sunion set1 set2
Redis_第25张图片
# 求集合交集
sinter set1 set2
在这里插入图片描述

 
 

有序集合

# 创建有序集合
zadd orderd_set_name oder_key1 value1 oder_key2 value2 oder_key3 value3 oder_key4 value4 oder_key5 value5
 
含义:order_key 是对集合排序时的依据,越小越靠前
Redis_第26张图片
# 获取值
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_第27张图片

 
 
 
 
 
 
 
 

python调用


 

基础

安装 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)

Redis_第28张图片

你可能感兴趣的:(centos,redis,数据库,缓存)