首页 > 数据库 >01-Redis系列之-Redis介绍安装配置

01-Redis系列之-Redis介绍安装配置

时间:2023-03-05 20:34:08浏览次数:58  
标签:aof 01 Redis ziplist redis --- yes 安装

Redis初识

Redis主要内容

1 redis介绍,特性,安装和配置,典型应用场景
2 单线程架构,5大数据类型操作,通用指令和高级API的使用
3 高级用法(慢查询,管道,shu发布订阅,bitmap位图,HyperLogLog,GEO地理位置信息)
4 持久化rdb和aof
5 主从复制,子进程开销和优化,两大阻塞(fork阻塞和aof追加阻塞)
6 哨兵和集群的详解和搭建,主从架构高可用
7 双写一致性,缓存详解和优化点(缓存更新策略,粒度,缓存穿透,击穿,雪崩)
8 布隆过滤器,MySQL主从搭建,Django集成MySQL读写分离

Redis介绍

开源:早起版本2w3千行

基于键值对的存储系统:字典形式

多种数据结构:字符串,hash,列表,集合,有序集合

高性能,功能丰富

那些公司在用

github,twitter,stackoverflow,阿里,百度,微博,美团,搜狐

Redis特性(8个)

速度快:10w ops(每秒10w读写),数据存在内存中,c语言实现,单线程模型

持久化:rdb和aof

多种数据结构

  • 5大数据结构

  • BitMaps位图:布隆过滤器 本质是 字符串

  • HyperLogLog:超小内存唯一值计数,12kb HyperLogLog 本质是 字符串

  • GEO:地理信息定位 本质是有序集合

支持多种编程语言:基于tcp通信协议,各大编程语言都支持

功能丰富:发布订阅(消息) Lua脚本,事务(pipeline)

简单:源代码几万行,不依赖外部库

主从复制:主服务器和从服务器,主服务器可以同步到从服务器中

高可用和分布式

  • 2.8版本以后使用redis-sentinel支持高可用

  • 3.0版本以后支持分布式

Redis单机安装

版本一览:http://download.redis.io/releases/

下载安装

# 安装
# 0.下载到指定目录
cd /
mkdir hkw
cd hkw
# 1.下载
wget http://download.redis.io/releases/redis-7.0.0.tar.gz
# 2.解压
tar -xzf redis-7.0.0.tar.gz
# 3.建立软连接
ln -s redis-7.0.0 redis
# 4.编译
cd redis
make&&make install
# 在src目录下可以看到
# redis-server--->redis服务器
# redis-cli---》redis命令行客户端
# redis-benchmark---》redis性能测试工具
# redis-check-aof--->aof文件修复工具
# redis-check-dump---》rdb文件检查工具
# redis-sentinel---》sentinel服务器,哨兵
# redis作者对windows维护不好,window自己有安装包

# 卸载redis
# 1、查看redis进程;
ps aux|grep redis
# 2、kill掉进程;
kill 进程id
# 3、进入到redis目录
cd /hkw/redis/
# 4、删除redis对应的文件
rm -f /usr/local/redis/bin/redis*
rm -f /usr/local/bin/redis*
# 5、删除对应的文件
rm -rf redis

三种启动方式

最简启动
# 最简启动(没有配置文件的默认启动方式)
redis-server
ps -ef|grep redis  # 查看进程
netstat -antpl|grep redis  # 查看端口
redis-cli -h ip -p port ping  # 命令查看
动态参数启动
# 动态参数启动(指定一些配置启动)
redis-serve --port 6666  # 启动,监听6666端口
配置文件启动(常用)
# 在redis目录下新建data目录,用来存放数据(配置文件中要用)
mkdir data
# 启动
redis-server /hkw/redis/redis.conf
# 配置文件启动(6379对应手机按键MERZ,意大利女歌手Alessia Merz的名字)
# 通过redis-cli连接,输入config get * 可以获得默认配置
# 在redis目录下创建config目录,copy一个redis.conf文件
# daemonize--》是否是守护进程启动(no|yes)(后台启动redis)
# protected-mode保护模式
# port---》端口号
# logfile--》redis系统日志
# dir--》redis工作目录
# 不支持远程连接:bind 127.0.0.1
# 支持远程连接:bind 0.0.0.0
# requirepass配置密码

# :$ 到文件最后,添加几行
daemonize yes
port 6379
dir "/hkw/redis/data"
logfile "redis.log"
bind 0.0.0.0
protected-mode no
requirepass root123456
配置文件
# 查看一下默认配置,相当于把#和空格都去掉了
cat redis.conf|grep -v "#" |grep -v "^$"
# 重定向到另一个文件
cat redis.conf|grep -v "#" |grep -v "^$" >redis-6666.conf
# 在redis目录下新建data目录,用来存放数据
# 启动redis
redis-server /hkw/redis/redis.conf
# 查看进程
ps -ef |grep redis-server |grep redis
# 查看是否启动
ps aux |grep redis
# 查看日志
cat /hkw/redis/data/redis.log
# 查看redis的配置信息(直接在交互式命令行下修改)
CONFIG GET *  # 查看所有配置信息
CONFIG SET maxmemory 128M
CONFIG REWRITE  # 把修改写到配置文件中

客户端连接

# 客户端连接
redis-cli -h 127.0.0.1 -p 6379
ping  # 返回PONG

关闭redis-server

1.kill -9 进程id号
2.redis-cli -a password shutdown

redis返回值

# redis返回值
状态回复:ping---》PONG
错误回复:hget hello field ---》(error)WRONGTYPE Operation against
整数回复:incr hello---》(integer) 1
字符串回复:get hello---》"world"
多行字符串回复:mget hello foo---》"world" "bar"

Redis典型使用场景

缓存系统:使用最广泛的就是缓存

计数器:网站访问量,转发量,评论数(文章转发,商品销量,单线程模型,不会出现并发问题)

消息队列:发布订阅,阻塞队列实现(简单的分布式,blpop:阻塞队列,生产者消费者)

排行榜:有序集合(阅读排行,点赞排行,推荐(销量高的,推荐))

社交网络:很多特效跟社交网络匹配,粉丝数,关注数,个性推荐

实时系统:垃圾邮件处理系统,布隆过滤器

Redis配置详解

port 6379
daemonize yes   # 以后台模式运行
protected-mode no   # 集群模式下要设置成no,设置为yes的时候需要配合bind参数,只有被bind的ip能访问我们的redis

dir /data/redis # 日记、aof、rdb文件都会保存到这里 所以这个路径要是机器磁盘空间最大的(可通过df –h来获取磁盘信息)
logfile redis-6379.log  # 产生的日记名
loglevel notice  # 日记级别(用于生产环境)

timeout 1800  # 在客户端空闲多久后关闭连接,单位为秒。0表示永不关闭,这里的值必须大于客户端设置的连接池的最小空闲时间
tcp-keepalive 0  # 0表示在没有通信的情况下,不会向客户端发送TCP ACK来检测客户端是否被关闭,因为在客户端有空闲检测,所以服务端没必要去检测客户端的状态

maxmemory 4gb  # redis最多能用多少内存,如果不设置的话,redis会一直消耗完系统所有的内存
maxmemory-policy volatile-lfu  # redis达到maxmemory后的内存回收策略,lfu比lru性能更好
lfu-log-factor 10
lfu-decay-time 1

dbfilename redis-6379.rdb  # 产生的rdb文件名
rdbcompression yes  # 开启rdb文件压缩
stop-writes-on-bgsave-error yes  # bgsave错误的时候停止写操作来保证bgsave成功
rdbchecksum yes  # 检测rdb文件的完整性

appendonly yes  # 开启aof,建议主节点关闭,从节点开启
appendfsync everysec  # aof刷盘策略
auto-aof-rewrite-min-size 64mb  # 当aof文件多大的时候才进行重写
auto-aof-rewrite-percentage 100  # aof增长率
no-appendfsync-on-rewrite yes   # 在aof重写的时候时候不进行正常的aof
appendfilename redis-6379.aof  # 产生的aof文件名

# 当hash的大小小于512个,并且每个值都小于64byte时,就使用ziplist存储
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2    # redis的list结构是quickList,每个quickList由多个quicklistNode组成,每个quicklistNode有个指针指向实际存储的zipList。这里的-2是指zipList的长度8kb,超出了这个字节数,就会新起一个ziplist
list-compress-depth 0   # 压缩深度为0,表示zipList不压缩,不压缩的话,push/pop会快;深度为1时,表示quicklist首尾两个ziplist不压缩,其他的都压缩;如果深度为2,就表示quicklist的首尾第一个ziplist 以及首尾第二个ziplist都不压缩,其他的都压缩;以此类推
set-max-intset-entries 512  # 当intset的元素个数达到512个后,intset升级成dict
zset-max-ziplist-entries 128    # 与hash同理,因为set是hash的特殊情况,set的value都是null
zset-max-ziplist-value 64
# hll-sparse-max-bytes 3000

slowlog-max-len 1000    # 慢查询队列的长度
slowlog-log-slower-than 1000   # 多少时间定义为慢查询 单位微秒

cluster-enabled yes # 是否以集群的形式启动
cluster-config-file redis-nodes.conf
cluster-require-full-coverage no    # 集群中是否16384个槽都可用或所有master节点都没有问题才对外提供服务,保证集群的完整性 
cluster-node-timeout 15000    # 各个节点相互发送消息的频率,单位为毫秒。某节点发现与其他节点最后通信时间超过cluster-node-timeout/2时会发送ping命令,同时带上slots槽数组(2KB)和整个集群1/10的状态数据(10个节点的状态数据约1KB),该参数也会影响故障转移时间

client-output-buffer-limit normal 0 0 0 # 不限制普通客户端缓冲区
client-output-buffer-limit replica 512mb 128mb 60   # slave同步主节点的数据,当slave缓冲区超过512m或者缓冲区在60s秒一直处于128m以上,slave节点会被挂掉
client-output-buffer-limit pubsub 32mb 8mb 60

replica-lazy-flush yes  # 从库接收完rdb文件后的 flush操作
lazyfree-lazy-eviction yes  # 内存达到 maxmemory时进行淘汰
lazyfree-lazy-expire yes    # key过期删除
lazyfree-lazy-server-del yes    # rename指令删除destKey

标签:aof,01,Redis,ziplist,redis,---,yes,安装
From: https://www.cnblogs.com/hkwJsxl/p/17181543.html

相关文章

  • 04-Redis系列之-持久化(RDB,AOF)
    持久化的作用什么是持久化redis的所有数据保存在内存中,对数据的更新将异步的保存到硬盘上持久化的实现方式快照:某时某刻数据的一个完整备份(mysql的Dump,redis的RDB)......
  • 03-Redis系列之-高级用法详解
    慢查询生命周期我们配置一个时间,如果查询时间超过了我们设置的时间,我们就认为这是一个慢查询.慢查询发生在第三阶段客户端超时不一定慢查询,但慢查询是客户端超时的一个......
  • 02-Redis系列之-架构和高级API的使用
    通用部分通用命令#1-keys#打印出所有keykeys*#打印出所有以n开头的keykeysn*#打印出所有以nam开头,第四个字母是a到z的范围keysnam[a-z]#四位长度,以n开......
  • Redis基础篇
    1、简单介绍一下Redis优点和缺点?优点:1、本质上是一个Key-Value类型的内存数据库,很像memcached2、整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据......
  • Kali中安装Oneforall(命令教程)
    Oneforall是一款好用的信息收集工具,很受欢迎安装教程切换用户(使用root用户)sudosu#然后输入kali的默认密码kali,就可以进入了切换到/opt目录下cd/o......
  • springboot中redis的基本数据类型测试
    在springboot中依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artif......
  • CAD几种插件安装方式,及报错版本问题
    0.双击setup.exe(源泉建议方式)1.直拖入相关如sys/下的,Setup.fas,install.vlx(海龙建议方式)2.路径添加插件:命令:op-->文件-->支持文件搜索路径-->添加插件目录sys/.即......
  • 01-微服务与Spring Cloud
    微服务微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务......
  • 财政收入影响因素分析及预测(2014-2016)
    importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassnsinputfile=r"C:\Users\asus\Desktop\data.csv"data=pd.read_csv(inputf......
  • Dell g15硬盘安装踩坑
    序言:最近因为某些原因,需要往笔记本中安装硬盘,本来这个过程我之前是接触过的,但是戴尔的一些特殊构造确实让我大开眼界,这里分享一下这个过程中我遇到的一些问题(好像g16也适用......