一、简介
1、开源:早期版本2万3千行
2、存储形式:基于键值对的形式存储
3、高性能,功能丰富
二、特性
1、速度快:10万ops,c语言实现,数据在内存中读写,单线程模式,io多路复用模型
2、持久化:rdb模式与aof模式
3、多种数据结构:
①五大基本数据类型:string(字符串),list(列表),hash(字典),set(无序集合),zset(有序集合)
②位图(bitmap):本质是字符串,布隆过滤器就是用的位图
③hyperloglog:本质是字符串,可使用超小内存进行唯一值计
④geo:本质是有序集合,用于地理信息定位
4、支持多种编程语言:基于tcp/ip通信协议,各大编程语言都支持
5、功能丰富:发布订阅,lua脚本,管道
6、结构加单:不依赖外部库
7、主从复制:主服务器的数据可以同步给从服务器
8、高可用和分布式:
①2.8版本以后使用redis-sentinel支持高可用
②3.0版本以后支持分布式
三、下载安装
2、解压:tar -xzf redis-5.0.7.tar.gz
3、建立软连接:ln -s redis-5.0.7 redis
4、切换到软连接目录:cd redis
5、编译源码:make&&make install
四、src目录下redis相关可执行文件
1、redis-server:服务端
2、redis-cli:客户端
3、redis-benchmark:性能测试工具
4、redis-check-aof:aof文件修复工具
5、redis-check-dump:rdb文件检查工具
6、redis-sentinel:哨兵服务器
五、卸载
1、查看redis进程:ps aux|grep redis
2、清除进程:kill 进程id
3、进入到redis所在目录:cd /usr/local/
4、删除redis对应的文件:
①rm -f /usr/local/redis/bin/redis*
②rm -f /usr/local/bin/redis*
③rm -rf redis
六、启动
1、无配置启动:redis-server
2、指定参数启动:redis-serve --port 6380
3、指定配置文件启动:redis-server config/redis.conf
4、查看进程:ps -ef |grep redis-server |grep 6379
5、查看日志:cd data => at 6379.log
6、配置文件相关参数:
①在redis目录下创建config目录,copy一个redis.conf文件
②daemonize:是否是守护进程启动(no|yes)=> daemonize yes
③port:端口号 => port 6379
④logfile:日志文件路径 => logfile "6379.log"
⑤dir:工作文件路径 => dir "/opt/soft/redis/data"
⑥pidfile:进程号文件路径 => pidfile "/var/run/redis.pid"
七、客户端连接
1、无密码连接:redis-cli -h 127.0.0.1 -p 6379
2、测试连接:ping => 返回pong
3、带密码连接:redis-cli -h 127.0.0.1 -p 6370 -a 123456
4、先连接再输入密码:redis-cli -h 127.0.0.1 -p 6379 => auth 123456
5、客户端登录后修改配置:
①查看配置:config get *
②修改最大内存:config set maxmemory 128M
③修改密码:config set requirepass 123456
④保存并刷新配置:config rewrite
八、返回格式
1、状态回复:ping => pong
2、错误回复:hget hello field => (error)WRONGTYPE Operation against
3、整数回复:incr hello => (integer) 1
4、字符串回复:get hello => "world"
5、多行字符串回复:mget hello foo => "world" "bar"
九、使用场景
1、缓存系统:使用最广泛的
2、计数器(单线程模型,不会因为并发出现冲突):网站访问量,转发量,评论数,文章转发,商品销量
3、消息队列(分布式阻塞队列):发布订阅
4、排行榜(有序集合):排行榜,推荐
5、社交网络(很多特性跟社交网络匹配):地理位置,关注数
6、过滤系统(布隆过滤器):垃圾邮件,恶意请求
十、单线程架构
1、纯内存的非阻塞IO,自身实现了事件处理,不在网络IO上浪费过多时间
2、单线程的模式避免了线程间切换的竞争消耗
3、一次只运行一条指令
4、拒绝长慢指令
5、除了在内存中操作,也可以做持久化存储,持久化操作会另起线程
posted @
2020-09-06 14:41
专业搬砖人士
阅读(
172)
评论()
收藏
举报