数据库-day05-20201011-数据库备份与还原-redis入门简述-python连接redis

# 数据库的备份与恢复
mysqldump -uroot -p db_name > db_name.sql
mysql -uroot -p db_name < db_name.sql

mysqldump -uroot -p -B zabbix > ./zabbix.sql
mysqldump -uroot -p -B hpc > ./hpc.sql

# NoSQL
# 大数据
# mysql qps 每秒支持的查询次数 5000-8000
# redis qbs 11W

# Redis 入门
# 基于键值对的NoSQl数据库 提供了对多种数据类型的支持 能够满足很多应用场景
# 将数据存放到内存中 因此读写性能非常惊人 与此同时也提供了持久化机制 能够将内存中的数据保存到硬盘 发生意外数据也不会丢失


# Redis安装
wget http://download.redis.io/releases/redis-6.0.8.tar.gz?_ga=2.122348168.24499249.1602385905-524298130.1602385905
tar -xvf redis-6.0.8.tar.gz
make && make install

安装报错的话需要升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
#注意:scl命令启用只是临时的,推出xshell或者重启就会恢复到原来的gcc版本。
#如果要长期生效的话,执行如下:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
# 来源https://blog.csdn.net/zhuangzaihe/article/details/107104542

# 安装目录的源代码下会有个配置文件
vim redis.conf

# 绑定到指定的ip
bind 127.0.0.1
port 6379
# 默认端口 redis
daemonize no
# 守护进程 no 改成yes 后台运行
daemonize yes
# 设置日志级别 可选值 debug调试 verbose详细 notice通知 warning警告
loglevel warning
# 配置数据库的数量 默认16个
databses 16

redis-server redis.conf
# 运行加载配置项 就可以后台运行了
save 900 1    #900s 15分钟内修改过    1个key 写入一次数据库
save 300 10   #300s  5分钟内修改过   10个key 写入一次数据库
save 60 10000 # 60s  1分钟内修改过10000个key 写入一次数据库
# 配置数据写入规则
# 配置redis的持久化机制-RDB
# redis在运行时 所有数据都保存在内存里 进程结束后 会将数据写入到硬盘中 启动时 会读取硬盘的内容 并将内容全部加载到内存中 会大量的占用内存
# 默认方式 直接镜像内存的数据 把内存的数据保存到dump.rdb文件
# 速度快 但数据可能丢失
# 所以redis 大部分用来做缓存 数据的存储还是放到mysql里面
rdbcompression yes  # 压缩 RDB 文件
rdbchecksum yes     # 对 RDB 文件进行校验
dbfilename dump.rdb # RDB 数据库文件的文件名
dir ./              # RDB 文件的保存位置
# 配置redis的持久化机制-AOF
# 默认是关的
# 适合增量保存 数据不丢失 但文件体积大 恢复时间长
appendonly no
appendfilename "appendonly.aof"
#配置redis






redis-cli
# 连接到redis客户端了

# redis 字符串操作
# http://redisdoc.com/index.html 命令参考
127.0.0.1:6379> set name zss
OK
127.0.0.1:6379> get name
"zss"
127.0.0.1:6379> set age 18 ex 20
# 20s 过期
OK
127.0.0.1:6379> get age
"18"
127.0.0.1:6379> get age
(nil)
127.0.0.1:6379> ttl name
(integer) -1
# ttl 查看过期时间 -1 永不过期
127.0.0.1:6379> get name
"zss"
127.0.0.1:6379> setnx name liul
(integer) 0
# setnx 如果name 不存在 就设置为 liul 如果存在就不操作
127.0.0.1:6379> get name
"zss"
127.0.0.1:6379> mset a 99 n 99 b 99 c 00
OK
# 设置多个值
127.0.0.1:6379> mget a n b c
1) "99"
2) "99"
3) "99"
4) "00"
# 查看多个值
127.0.0.1:6379> incrby n 18
(integer) 117
# 自增 增加18 变成117了
127.0.0.1:6379> get n
"117"

# redis 里 hash 表的使用
127.0.0.1:6379> hset dog name dahuang color white
(integer) 2
# 设置一个key dog 各种属性 
127.0.0.1:6379> keys *
1) "dog"
2) "a"
3) "b"
4) "c"
5) "name"
6) "n"
7) "x"
127.0.0.1:6379> hset dog age 2
(integer) 1
127.0.0.1:6379> hget dog name
"dahuang"
# 查看属性
127.0.0.1:6379> hget dog age
"2"
127.0.0.1:6379> hexists dog age
(integer) 1
# 查看属性是否存在 存在为1 不存在为0
127.0.0.1:6379> hexists dog a
(integer) 0
127.0.0.1:6379> hdel dog age
(integer) 1
# 删除属性
127.0.0.1:6379> hexists dog age
(integer) 0
127.0.0.1:6379> hlen dog
(integer) 2
# 有几个属性
127.0.0.1:6379> hgetall dog
1) "name"
2) "dahuang"
3) "color"
4) "white"
# 获取全部信息

# redis 里的列表可以实现类似队列和栈的结构
# 队列 先进先出
# 栈 后进先出 手机界面管理
127.0.0.1:6379> lpush names lisi wangwu zhangsan
(integer) 3
# 依次往左边插入
127.0.0.1:6379> lrange names 0 -3
1) "zhangsan"
127.0.0.1:6379> lrange names 0 -1
1) "zhangsan"
2) "wangwu"
3) "lisi"
127.0.0.1:6379> rpush names xx ww zz
(integer) 6
# 依次往右边插入
127.0.0.1:6379> lrange names 0 -1
1) "zhangsan"
2) "wangwu"
3) "lisi"
4) "xx"
5) "ww"
6) "zz"
127.0.0.1:6379> lpop names
"zhangsan"
# 取走一个数据 第一个
127.0.0.1:6379> lrange names 0 -1
1) "wangwu"
2) "lisi"
3) "xx"
4) "ww"
5) "zz"
127.0.0.1:6379> lrange names 0 -1
1) "wangwu"
2) "lisi"
3) "xx"
4) "ww"
5) "zz"
127.0.0.1:6379> lset names 2 rose
OK
# 更改2下标对应的值 下标 0 1 2 3 ...
127.0.0.1:6379> lrange names 0 -1
1) "wangwu"
2) "lisi"
3) "rose"
4) "ww"
5) "zz"
127.0.0.1:6379> llen names
(integer) 5
# 属性长度
127.0.0.1:6379> lindex names 3
"ww"
# 下标为3的

# redis 集合的使用
127.0.0.1:6379> sadd wzry zss uyw hjf hfc gtw
(integer) 5
# 创建集合 wzry 后面是成员
127.0.0.1:6379> sadd jdqs zss kjh gfs whb hfs jbc
(integer) 6
127.0.0.1:6379> sismember wzry gfs
(integer) 0
# 成员是否在集合里 0 不在 1 在
127.0.0.1:6379> sismember wzry gtw
127.0.0.1:6379> srandmember wzry 3
1) "hfc"
2) "gtw"
3) "zss"
# 随机抽取指定个数成员
127.0.0.1:6379> srandmember wzry 3
1) "uyw"
2) "hjf"
3) "gtw"
127.0.0.1:6379> smembers jdqs
1) "gfs"
2) "kjh"
3) "zss"
4) "jbc"
5) "whb"
6) "hfs"
# 拿到全部的成员
127.0.0.1:6379> sdiff jdqs wzry
1) "whb"
2) "jbc"
3) "gfs"
4) "kjh"
5) "hfs"
# 拿到不同的
127.0.0.1:6379> sunion jdqs wzry
 1) "kjh"
 2) "whb"
 3) "uyw"
 4) "hfs"
 5) "gfs"
 6) "zss"
 7) "hfc"
 8) "jbc"
 9) "gtw"
10) "hjf"
# 合并到一起
127.0.0.1:6379> sinter wzry jdqs
1) "zss"
# 交集

# 有序集合
127.0.0.1:6379> zadd rank 30 jkl 40 hbb 98 hgg 72 gty 100 zss
(integer) 5
# 创建一个有序集合
127.0.0.1:6379> zrange rank 0 -1
1) "jkl"
2) "hbb"
3) "gty"
4) "hgg"
5) "zss"
# 按从小到大排序
127.0.0.1:6379> zrank rank zss
(integer) 4
127.0.0.1:6379> zrank rank hgg
(integer) 3
# 看级别 和下标差不多
127.0.0.1:6379> zrevrange rank 0 -1
1) "zss"
2) "hgg"
3) "gty"
4) "hbb"
5) "jkl"
# 按从大到小顺序
127.0.0.1:6379> zrevrange rank 0 -1 withscores
 1) "zss"
 2) "100"
 3) "hgg"
 4) "98"
 5) "gty"
 6) "72"
 7) "hbb"
 8) "40"
 9) "jkl"
10) "30"
# 同时打印数据
127.0.0.1:6379> zincrby rank 20 jkl
"50"
# 给指定的成员的数据 增加20
127.0.0.1:6379> zrevrange rank 0 -1 withscores
 1) "zss"
 2) "100"
 3) "hgg"
 4) "98"
 5) "gty"
 6) "72"
 7) "jkl"
 8) "50"
 9) "hbb"
10) "40"

# python使用redis
# 先安装下redis 模块
pip3 install redis

安装报错的话试下下面的

不是源的问题。
是dns的问题。

vim /etc/resolv.conf
最后一行添加
nameserver 8.8.8.8
nameserver 114.114.114.114

pip3 install ipython
# 服务器上可以交互的python
[root@node1 redis]# ipython
Python 3.6.8 (default, Apr  2 2020, 13:34:55)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.16.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import redis

In [3]: client = redis.Redis()

In [4]: client.get('name')
Out[4]: b'zss'

In [6]: client.hget('dog','name')
Out[6]: b'dahuang'

In [7]: client.hgetall('dog')
Out[7]: {b'name': b'dahuang', b'color': b'white'}

P384

你可能感兴趣的:(数据库,数据库,redis,python)