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介绍安装配置的更多相关文章

  1. 01 Flume系列(一)安装配置

    01 Flume系列(一)安装配置 Flume(http://flume.apache.org/) is a distributed, reliable, and available service ...

  2. Redis系列(一):Redis的简介与安装

    原文链接(转载请注明出处):Redis系列(一):Redis的简介与安装 什么是 Redis Redis 是一个使用ANSI C 编写的开源.支持网络协议.基于内存.可选持久性的键值对数据库,它是一个 ...

  3. redis学习之一 - linux下安装配置

    Content 0.序 1.如何安装? 2.配置参数及其意义 3.设为linux服务 0.序 本文主要是记录Redis在 Centos下的安装配置 .文中如无特别说明.表示redis-3.2.10代码 ...

  4. Redis系列一 Redis安装

    Redis系列一    Redis安装 1.安装所使用的操作系统为Ubuntu16.04 Redis版本为3.2.9 软件一般下载存放目录为/opt,以下命令操作目录均为/opt root@ubunt ...

  5. Redis系列(二):Redis的数据类型及命令操作

    原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...

  6. Hadoop 系列(二)安装配置

    Hadoop 系列(二)安装配置 Hadoop 官网:http://hadoop.apache.or 一.Hadoop 安装 1.1 Hadoop 依赖的组件 JDK :从 Oracle 官网下载,设 ...

  7. redis系列:redis介绍与安装

    前言 这个redis系列的文章将会记录博主学习redis的过程.基本上现在的互联网公司都会用到redis,所以学习这门技术于你于我都是有帮助的. 博主在写这个系列是用的是目前最新版本4.0.10,虚拟 ...

  8. 初识Redis系列之二:安装及简单使用

    仅介绍windows下的安装 一:下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的 ...

  9. 深入剖析Redis系列: Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  10. Redis系列之----Redis的两种持久化机制(RDB和AOF)

    Redis的两种持久化机制(RDB和AOF) 什么是持久化    Redis的数据是存储在内存中的,内存中的数据随着服务器的重启或者宕机便会不复存在,在生产环境,服务器宕机更是屡见不鲜,所以,我们希望 ...

随机推荐

  1. 【转帖】JVM 内存模型与垃圾回收

    文章目录 1. JVM内存模型 1.1. 程序计数器 (线程私有) 1.2. Java 虚拟机栈 (线程私有) 1.3. 本地方法栈 (线程私有) 1.4. Java 堆 (线程共享) 1.5. 方法 ...

  2. TCP内核参数的简单验证

    前言 春节假期时学习了下内核参数与nginx的调优 最近因为同事遇到问题一直没有解,自己利用晚上时间再次进行验证. 这里将几个参数的理解和验证结果简单总结一下. 希望能够在学习的过程中将问题解决掉. ...

  3. 【转贴】西数全新推出企业级金盘SSD:2.5寸U.2接口、最大7.68TB、96层TLC

    西数全新推出企业级金盘SSD:2.5寸U.2接口.最大7.68TB.96层TLC https://www.cnbeta.com/articles/tech/951353.htm 硬件发展日新月异 &q ...

  4. 使用smem 计算Oracle用户下内存占用情况.

    1. 本来计划使用 ps 命令进行查看, 但是发现ps 最多查询出来的是 RSS的内存数据, 会多添加很多冗余的内存数据量进来, 于是作罢 2. 找了下公司的方神, 说可以使用smem 然后简单看了下 ...

  5. 为什么Kubernetes和容器与机器学习密不可分?

    原文出自infosecurity 作者:Rebecca James 京东云开发者社区编译 当前,数字化转型的热潮在IT领域发展的如火如荼,越来越多的企业投身其中,机器学习和人工智能等现代技术的融合在公 ...

  6. JS遍历树形数据

    树形数据结构遍历某个key值 深度优先遍历(DFS) let tree = [{ id: '1', name: '节点1', children: [{ id: '1-1', name: '节点1-1' ...

  7. js解析上传APK文件的详细信息

    前端解析APK版本信息 需要安装这个包,可以使用cnpm或者npm npm 安装 app-info-parser ( 命令:npm install app-info-parser) APKInfo为i ...

  8. 【k哥爬虫普法】非法入侵计算机信息系统,获取1500万余条个人信息!

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...

  9. 初试高云FPGA

    前言 之前一直眼馋Sipeed的Tang系列,正好遇到有工程需要高速控制并行总线,就买了NANO 9K和Primer 20K试试水 买回来先拆的贵的20k,结果发现Sipeed设计师有奇怪的脑回路: ...

  10. Xmind永久会员版本

    Xmind软件不要多介绍了思维导图最好用的软件 PJ后可以直接使用高级版本功能如图 使用方式 下载我们提供的版本和.dll即可如图 点击Xmind安装默认C盘不可以自定义位置 安装完成后进入patch ...