01-Redis系列之-Redis介绍安装配置
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
01-Redis系列之-Redis介绍安装配置的更多相关文章
- 01 Flume系列(一)安装配置
01 Flume系列(一)安装配置 Flume(http://flume.apache.org/) is a distributed, reliable, and available service ...
- Redis系列(一):Redis的简介与安装
原文链接(转载请注明出处):Redis系列(一):Redis的简介与安装 什么是 Redis Redis 是一个使用ANSI C 编写的开源.支持网络协议.基于内存.可选持久性的键值对数据库,它是一个 ...
- redis学习之一 - linux下安装配置
Content 0.序 1.如何安装? 2.配置参数及其意义 3.设为linux服务 0.序 本文主要是记录Redis在 Centos下的安装配置 .文中如无特别说明.表示redis-3.2.10代码 ...
- Redis系列一 Redis安装
Redis系列一 Redis安装 1.安装所使用的操作系统为Ubuntu16.04 Redis版本为3.2.9 软件一般下载存放目录为/opt,以下命令操作目录均为/opt root@ubunt ...
- Redis系列(二):Redis的数据类型及命令操作
原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...
- Hadoop 系列(二)安装配置
Hadoop 系列(二)安装配置 Hadoop 官网:http://hadoop.apache.or 一.Hadoop 安装 1.1 Hadoop 依赖的组件 JDK :从 Oracle 官网下载,设 ...
- redis系列:redis介绍与安装
前言 这个redis系列的文章将会记录博主学习redis的过程.基本上现在的互联网公司都会用到redis,所以学习这门技术于你于我都是有帮助的. 博主在写这个系列是用的是目前最新版本4.0.10,虚拟 ...
- 初识Redis系列之二:安装及简单使用
仅介绍windows下的安装 一:下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的 ...
- 深入剖析Redis系列: Redis集群模式搭建与原理详解
前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...
- Redis系列之----Redis的两种持久化机制(RDB和AOF)
Redis的两种持久化机制(RDB和AOF) 什么是持久化 Redis的数据是存储在内存中的,内存中的数据随着服务器的重启或者宕机便会不复存在,在生产环境,服务器宕机更是屡见不鲜,所以,我们希望 ...
随机推荐
- 【转帖】ARM 虚拟化技术简介
一. 虚拟化技术二. 虚拟化技术的比较2.1 全虚拟化和二进制重写(Pure virtualization and binary rewriting)2.2 半虚拟化( Para-virtualiza ...
- [转帖]Linux文本处理三剑客sed详解(正则匹配、命令示例)
https://developer.aliyun.com/article/885609?spm=a2c6h.24874632.expert-profile.312.7c46cfe9h5DxWK 简介: ...
- [转帖]【k8s】5、资源管理命令-声明式
文章目录 一. yaml和json介绍 1.yuml语言介绍 2.k8s支持的文件格式 3.yaml和json的主要区别 二.声明式对象管理 1.命令式对象配置 2.声明式对象配置 3.声明式对象管理 ...
- 隐私计算之多方安全计算(MPC,Secure Multi-Party Computation)
作者:京东科技隐私计算产品部 杨博 1.背景 如今,组织在收集.存储敏感的个人信息以及在外部环境(例如云)中处理.共享个人信息时, 越来越关注数据安全.这是遵守隐私法规的强需求:例如美国加利福尼亚 ...
- 将字符串变成数组split
字符串变成数组,常用来获取数组中我们需要的值. var str="http://op/adfie/life.png"; let arr=str.split('.'); consol ...
- typeof的用法和注意点
基本数据类型和查看数据类型 1==>js有六种基本数据类型. String Boolean Number null underfined Symbol [6种] 但是<你不知道的javas ...
- Python 潮流周刊#22:Python 3.12.0 发布了!!
你好,我是猫哥.这里每周分享优质的 Python.AI 及通用技术内容,大部分为英文.标题取自其中一则分享,不代表全部内容都是该主题,特此声明. 本周刊由 Python猫 出品,精心筛选国内外的 25 ...
- 用户 'NT Service\SSISScaleOutMaster140' 登录失败
用户 'NT Service\SSISScaleOutMaster140' 登录失败. 原因: 找不到与提供的名称匹配的登录名. 项目情况: 用户 'NT Service\SSISScaleOutMa ...
- Go 跟踪函数调用链,理解代码更直观
Go 跟踪函数调用链,理解代码更直观 目录 Go 跟踪函数调用链,理解代码更直观 一.引入 二.自动获取所跟踪函数的函数名 三.增加 Goroutine 标识 四.让输出的跟踪信息更具层次感 五.利用 ...
- python中可变参数与装饰器的例子
python的可变参数 方法定义 #*args是可以传list类型的可变参数,**kwargs是可以传dict的可变参数 def wrapper(*args, **kwargs): 使用示例 def ...