第1章 Redis初识
带领听众进入Redis的世界,了解它的前世今生、众多特性、应用场景、安装配置、简单使用,可以让听众对Redis有一个全面的认识。
1-1 导学
1-2 Redis初识 试看
1-3 谁在使用Redis
1-4 redis特性目录
1-5 特性1-速度快
1-6 特性2-持久化
1-7 特性3-数据结构
1-8 特性4-多语言客户端
1-9 特性5-功能丰富
1-10 特性6-简单
1-11 特性7-复制
1-12 特性8-高可用分布式
1-13 redis典型使用场景
1-14 redis三种启动方式介绍
1-15 redis常用配置
1-16 redis安装启动演示
第1章 Redis初识
带领听众进入Redis的世界,了解它的前世今生、众多特性、应用场景、安装配置、简单使用,可以让听众对Redis有一个全面的认识。
1-1 导学
Redis是什么\Redis的特性\Redis典型应用场景\Redis单机安装
Redis是什么
1.开源(学习、定制化、早期23.000lines of code)
2.基于键值对的存储服务系统(key-value、数据库
Java Map String value = map.get(“key”);
python Dict dictionary[“key”] = value;
Ruby\C++\NodeJS
)
3.多种数据结构(String\Hash Tables\Linked Lists\Sets\Sorted Sets)
4.高性能、功能丰富
Redis的前世今生
作者:Salvatore Sanfilippo(antirez)
是作者在制作一个网站时,mysql不能满足他的要求
Redis的特性
1.速度块 --10w OPS 内存
2.持久化 --将数据的更新异步地保存在磁盘上
3.多种数据结构 --字符串 hash 列表 集合 有序集合
–延申:位图 地理信息
4.支持多种编辑语言 --JAVA PHP PYTHON RUBY LUA NODEJS
5.功能丰富 --发布订阅 LUA脚本 事务 pipeline(并发效率)“ 瑞士军刀”
6.简单 --不依赖外部库 单线程模型(代码短小精悍、使用简单)
7.主从复制 重点–把主节点的数据做一个副本
8.高可用、分布式 重点
10w OPS 每秒钟可以实现10万次读写,达到万级别的
数据存在哪?内存
什么语言写?C语言 5万行代码
线程模型? 单线程,多线程会成为并发的瓶颈
寄存器、一级缓存、二级缓存、内存、本地硬盘、远程硬盘
redis块的一个真正原因:内存
把所有的数据保存在内存中,但内存的数据不具有持久化的特性,也就是说断电时无法对内存的数据进行恢复的。
所以要对数据进行持久化。
即将数据的更新异步地保存在磁盘(dump)上
字符串 hash 列表 集合 有序集合
衍生的数据结构:位图 地理信息
BitMaps:位图,用很小的内存实现高效的存储,例如使用布隆过滤器
HyperLogLog:超小内存唯一值计数 12k 上亿数 计算每天的DAU
GEO:地理信息定位,计算纬度经度
他们本质是字符串
JAVA PHP PYTHON RUBY LUA NODEJS都去支持redis数据库服务器
发布订阅 实现很多基于消息的功能
LUA脚本 自定义命令
事务
pipeline(提高客户端的并发效率)
“ 瑞士军刀”
(代码短小精悍单机2万3千行代码分布式5万行代码、
使用简单)
不依赖外部库
单线程模型(无论是服务端还是客户端的开发都相对容易一些)
主服务器的数据到从服务器上拷贝几分
v2.8开始支持Redis-Sentinel(哨兵)高可用
v3.0开始支持Redis-Cluster 分布式
Redis典型应用场景
1.缓存系统
2.计数器
3.消息队列系统
4.排行榜
5.社交网络
6.实时系统
一个用户访问app server(Java tomcat),首先会从cache中去获取(内存)使用缓存系统,有就直接返回,否则的话去storage中获取,然后不仅把数据返回,而且还要把数据缓存到cache中。
cache
storage
一条微博的转发数、评论数。increment,在单线程下计数,能保证正确性。还有视频网站的播放数。
消息队列系统,已经成为中间件或项目中开发的标配,成熟的消息队列系统有很多,早期的RabbitMQ、现在的Kafka、阿里开源的ActiveMQ。
reids也提供了发布订阅、阻塞队列来实现。
粉丝数、关注数、共同关注、时间轴列表
布隆过滤器、垃圾邮件过滤
$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar xzf redis-5.0.2.tar.gz
$ ln -s redis-3.0.7 redis
$ cd redis-5.0.2
$ make
$ make install
选择一个稳定的版本、解压缩、通常建立软连接,对于后期的升级比较方便、进入目录、进行编译、进行安装
redis-server 可以启动Redis服务器
redis-cli 用来连接Redis命令行客户端
redis-benchmark 基准测试Redis性能测试
redis-check-aof AOF文件修复工具
redis-check-dump RDB文件修复工具
redis-sentinel Sentinel服务器(2.8以后)
最简单启动 执行redis-server,会按照默认配置来启动
ps -ef|grep redis
netstat -antpl|grep redis
redis-cli -h ip -p port ping
动态参数启动
redis-server --port 6380 (默认6379)
配置文件启动
redis-server configPath
生产环境选择配置启动
单机多实例配置文件开源用端口号区分开
redis-cli -h 10.10.79.150 -p 6384
ping
set hello world
get hello
mget 多行字符串返回
get
Redis常用配置
deamonize 是否是守护进程默认no建议yes
prot redis对外端口号
logfile redis系统日志
dir redis工作目录
cat redis-6380.conf |grep -v “#”|grep -v “^$”>redis-6382.conf -------------------查看配置属性清晰
[root@redis01 redis]# redis-server config/redis-6382.conf
[root@redis01 redis]# more config/redis-6382.conf
daemonize yes
port 6382
dir “/opt/moudels/redis/data” ----需要自己建立文件夹
logfile “6382.log”
[root@redis01 redis]#
日志位置:
/opt/moudels/redis/data