Day29 PythonWeb全栈课程课堂内容
1.Redis 前言介绍
1.1 磁盘和内存的介绍
-
磁盘:利用磁记录技术存储数据的存储器。磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。
-
内存:内存(Memory)是计算机的重要部件之一,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来。内存的运行也决定计算机整体运行快慢的程度。内存条由内存芯片、电路板、金手指等部分组成。
1.2 Redis背景
- 随着互联网+大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量。这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈。
1.3 Redis发展历史
-
在互联网+大数据时代来临之前,企业的一些内部信息管理系统,一个单个数据库实例就能满足系统的需求单数据库实例
-
随着系统访问用户的增多,数据量的增大,单个数据库实例已经满足不了系统的读取需求。
缓存(memcache)+单数据库实例
-
缓存可以缓解系统的读取压力,但是数据量的写入压力持续增大。
缓存+主从数据库+读写分离
-
数据量再次增大,读写分离以后,主数据库的写库压力出现瓶颈。
缓存+主从数据库集群+读写分离+分库分表
-
互联网+大数据时代来临,关系型数据库不能很好的存取一些并发性高,实时性高的,并且数据格式不固定的数据。
nosql(no only sql)+主从数据库集群+读写分离+分库分表
1.4 Redis 是什么?
- 即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
- 关系型数据库:MySQL、oracle、SqlServer
1.5 Redis 作用
- 快速存取
1.6 Redis 使用
-
官网地址:https://redis.io/ https://redis.cn/
-
命令地址:http://doc.redisfans.com/
-
Redis的五大数据类型以及应用场景:
string
字符串、list
列表、set
合集、hash
哈希、zset
有序集合。
1.7 Redis 安装和启动
-
安装网址:https://redis.io/download 。
-
Ubuntu安装(源码安装)
-
From source code
Download, extract and compile Redis with:
$ wget https://download.redis.io/releases/redis-6.2.1.tar.gz $ tar xzf redis-6.2.1.tar.gz $ cd redis-6.2.1 $ make
The binaries that are now compiled are available in the
src
directory. Run Redis with:$ src/redis-server
You can interact with Redis using the built-in client:
$ src/redis-cli redis> set foo bar OK redis> get foo "bar"
-
From the official Ubuntu PPA
You can install the latest stable version of Redis from the
redislabs/redis
package repository. Add the repository to theapt
index, update it and install:
$ sudo add-apt-repository ppa:redislabs/redis $ sudo apt-get update $ sudo apt-get install redis
-
From Snapcraft
You can install the latest stable version of Redis from the Snapcraft marketplace:
$ sudo snap install redis
Are you new to Redis? Try our online, interactive tutorial.
-
1.8 Redis 配置文件
-
redis.conf
是redis的配置文件。查看配置文件$ sudo vim redis.conf 当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。 daemonize no 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。 port 6379 设置数据库的数目。 databases 16 根据给定的时间间隔和写入次数将数据保存到磁盘 下面的例子的意思是: 900 秒内如果至少有 1 个 key 的值变化,则保存 300 秒内如果至少有 10 个 key 的值变化,则保存 60 秒内如果至少有 10000 个 key 的值变化,则保存 save 900 1 900秒内有1k发生变化就保存在磁盘内 save 300 10 300秒内有10k发生变化就保存在磁盘内 save 60 10000 960秒内有10000k发生变化就保存在磁盘内 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。 port 6379 Redis默认只允许本地连接,不允许其他机器连接 bind 127.0.0.1
-
更多配置文件:https://www.cnblogs.com/kreo/p/4423362.html
1.9 Redis 数据库简单使用
DBSIZE 查看当前数据库的key数量
keys * 查看key的内容
FLUSHDB 清空当前数据库的key的数量
FLUSHALL 清空所有库的key(慎用)
exists key 判断key是否存在
help 指令 指令查询
2. Redis 常用五大数据类型
2.1 Redis-string
string
是 Redis最基本的类型,一个key
对应一个value
。string
可以包含任何数据,最大不能超过512M。
-
set/get/mset/mget/append/del/strlen
set ---- 设置值 get ---- 获取值 mset ---- 设置多个值 mget ---- 获取多个值 append ---- 添加字段 del ---- 删除 strlen ---- 返回字符串长度
-
incr/decr/incrby/decrby
incr ---- 增加 decr ---- 减少 incrby ----- 制定增加多少 decrby ----- 制定减少多少
-
getrange/setrange
getrange ---- 获取指定区间范围内的值,类似between....and的关系 setrange ---- 代表从第几位开始替换,下脚本从零开始 从0 -1表示全部
-
expire
expire --设置有效时间 (用于获取手机验证码) expire key seconds
2.2 Redis-list
- 列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素列表的头部(左边)或者尾部(右边)它的底层实际是个链表
1.lpush/rpush/lrange
lpush/rpush/lrange ---- 从左/从右/获取指定长度
lpush list01 1 2 3 4 5 倒序排列
rpush list02 1 2 3 4 5 正序排列
lrange list01 0 -1 获取list01 中的所有值
2.lpop/rpop
lpop/rpop ---- 移除最左/最右
lpop list01 删除元素5
rpop list01 删除元素1
3.lindex,按照索引下标获得元素(从上到下)
lrange list01 0 -1
lindex list01 1
4.llen,求列表长度
llen list01
5.lrem key
删N个value
lpush list03 a b c d e f
lrem list03 1 a 在list01中删除1个a
6.ltrim key
ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim list04 0 2 截取list04 从0到2的数据在赋值给list01
7.rpoplpush list01 list02 将list01中最后一个压入list02中第一位
lrange list01 0 -1
lrange list02 0 -1
rpoplpush list01 list02
8.lset key index value
lset list01 0 x 将list02中第一位换成x
9.linsert key before/after
linsert list02 before x php 在x之前加字段php