初识 Redis
《 Redis 开发与运维》的学习笔记,希望大家多多指导。
什么是 Redis
Redis 的全称是 Remote Dictionary Server, 远程字典服务器。
Redis是一个开源的使用ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,是一种 NoSQL 数据库。
相关网站
Redis 的特点
Redis 的所有数据都是存放在内存中的(最主要的原因)
Redis 是用 C 语言实现的, 一般来说 C 语言实现的程序“距离”操作系统更近,执行速度相对会更快
Redis 使用了单线程架构,预防了多线程可能产生的竞争问题
Redis 源代码优良,集性能和优雅于一身
为什么快 ?
速度快
基于键值对的数据结构服务器
字符串
Bitmaps
HyperLogLog
GEO , 地理信息定位 ( 3.2 版本 )
哈希
列表
集合
有序集合
5 种数据结构
提供了键过期功能,可以用来实现缓存。
提供了发布订阅功能,可以用来实现消息系统。
支持 Lua 脚本功能,可以利用 Lua 创造出新的 Redis 命令。
提供了简单的事务功能,能在一定程度上保证事务特性。
提供了流水线(Pipeline)功能,这样客户端能将一批命令一次性传到 Redis,减少了网络的开销。
丰富的功能
Redis 的源码很少
Redis 使用单线程模型
Redis 不需要依赖于操作系统中的类库
简单
简单稳定
Redis 提供了简单的 TCP 通信协议
客户端语言多
RDB
AOF
持久化
Redis 提供了复制功能,实现了多个相同数据的 Redis 副本,复制功能是分布式 Redis 的基础
主从复制
2.8 版本,高可用实现 Redis Sentinel,它能够保证 Redis 节点的故障发现和故障自动转移
3.0 版本, 分布式实现 Redis Cluster, 它是 Redis 真正的分布式实现,提供了高可用、读写和容量的扩展性。
高可用和分布式
Redis 使用场景
Redis 可以做什么
缓存
列表和有序集合数据结构
排行榜系统
3.计数器应用
视频播放数
4.社交网络
赞/踩,粉丝,共同好友/喜好, 推送,下拉刷新
Redis 提供了发布订阅通能和阻塞队列的功能,基本可以满足简单的消息队列功能
消息队列系统
Redis 不可以做什么
数据规模
基于内存,不适合大规模数据,经济成本非常高;适用于小规模数据
数据冷热
指需要频繁操作的数据
热数据
冷数据
热数据适合放到 Redis 中加速读写,冷数据不适合
用好 Redis 的建议
切勿当作黑盒使用,开发与运维同样重要
阅读源码
Redis 的基础操作
安装
Linux 系统
# 下载 Redis 制定版本的源码压缩包到当前目录wget http://download.redis.io/releases/redis-3.0.7.tar.gz# 解压缩tar xzf redis-3.0.7.tar.gz# 建立 redis 目录的软连接,为了不把 redis 目录固定到指定版本上,利于未来升级ln -s redis-3.0.7 redis cd redis# 将相关运行文件放到 /usr/local/bin/ 下,编译之前确保操作系统已经安装gccmake# 安装make install# 安装结束后,验证redis-cli -v
Windows 下
配置、启动、操作、关闭 Redis
src 和 /usr/local/bin 目录下可执行文件说明
可执行文件 作用 redis-server 启动 Redis redis-cli Redis 命令行客户端 redis-benchmark Redis 基准测试工具 redis-check-aof Redis AOF 持久化文件检测和修复工具 redis-check-dump Redis RDB 持久化文件检测和修复工具 redis-sentinel 启动 Redis Sentinel 启动 Redis
默认配置文件位置: redis 文件夹下 redis.conf
配置名 配置说明 port 端口 logfile 日志文件 dir Redis 工作目录(粗放持久化文件和日志文件) daemonize 是否以守护进程的方式启动 Redis (后台启动) redis-server /opt/redis/redis.conf
默认配置
# 按照默认配置启动redis-server
运行启动
redis server --configName1 configValue --configName2 configValue2# 例如, 以 6666 作为端口启动 Redisredis-server --port 6666
配置文件启动
Redis 命令行客户端
# 两种连接方式## 第一种 redis-cli -h {host} -p {port}redis-cli -h 127.0.0.1 -p 6379# 取值get hello## 第二种 redis-cli -h ip{host} -p {port} {command}redis-cli -h 127.0.0.1 -p 6379 get hello
停止 Redis 服务
# 关闭过程: 断开与客户端的连接、持久化文件生成`redis-cli shutdown# 带参数关闭## 关闭前不生成持久化文件redis-cli shutdown nosave## 关闭前生成持久化文件redis-cli shutdown save# 使用杀死进程的方法关闭kill redis进程号# 注意:不能粗暴的使用 kill -9 强制杀死进程,这样不会持久化操作,同时有可能不能正常关闭和丢失数据
卸载 Redis
安装目录文件夹
/usr/local/bin 下的启动文件
关闭 Redis 服务
删除相关文件或文件夹
设置 Redis 开机自启动 ( Linux )
init.d 方式 ( CentOS 6 之前版本,包括 CentOS6 )
redis 服务名称可以自定义
redis_6666, redis_666.service
编写自启动脚本 redis
# chkconfig: 2345 10 90# description: Start and Stop redisPATH=/usr/local/bin:/sbin:/usr/bin:/bin REDISPORT=6379 #实际环境而定 EXEC=/usr/local/bin/redis-server #实际环境而定 REDIS_CLI=/usr/local/bin/redis-cli #实际环境而定 PIDFILE=/var/run/redis.pid CONF="/opt/redis/redis.conf" #实际环境而定 case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed." else echo "Starting Redis server..." $EXEC $CONF fi if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE exists, process is not running." else PID=$(cat $PIDFILE) echo "Stopping..." $REDIS_CLI -p $REDISPORT SHUTDOWN while [ -x $PIDFILE ] do echo "Waiting for Redis to shutdown..." sleep 1 done echo "Redis stopped" fi ;; restart|force-reload) ${0} stop ${0} start ;; *) echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2 exit 1 esac
设置权限并测试
# 设置可执行权限chmod 755 redis# 启动测试/etc/init.d/redis start
设置开机自启动并测试
# 设置开机自启动chkconfig redis on# 关机重启并验证reboot redis-cli
系统开机启动时会去加载 /etc/init.d/ 下面的脚本,通常而言每个脚本文件会自定义实现程序的启动;若想将新的程序开机自启动,只需在该目录下添加一个自定义启动程序的脚本,然后设置相应规则即可。
基本原理
步骤
注意
systemctl 方式 ( CentOS7 )
创建systemctl 服务
# 在/lib/systemd/system 目录下创建一个脚本文件redis.service# 脚本内容# 基本信息[Unit]## 描述信息Description=Redis## 在哪个服务之后启动After=network.target# 服务信息[Service] Type=forking## 启动服务的命令ExecStart=/usr/local/bin/redis-server /opt/redis/redis.conf## 重启服务的命令ExecReload=/usr/local/bin/redis-server -s reload## 停止服务的命令ExecStop=/usr/local/bin/redis-server -s stop PrivateTmp=true# 安装相关信息[Install]## 以何种方式启动,当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行WantedBy=multi-user.target
刷新配置并设置为开机启用
# 刷新配置systemctl daemon-reload# 启动服务 systemctl start redis.service# 重新启动systemctl restart redis.service# 停止服务systemctl stop redis.service# 开机启用systemctl enable redis.service# 禁止开机启动systemctl disable redis.service # 当前状态systemctl status redis.service
使用 systemctl 进行服务管理
基本原理
步骤
作者:izerone
链接:https://www.jianshu.com/p/6725951a71df
共同学习,写下你的评论
评论加载中...
作者其他优质文章