redis初识

一、简介

1、开源:早期版本2万3千行

2、存储形式:基于键值对的形式存储

3、高性能,功能丰富

4、广泛应用:github,twitter,阿里,百度,微博,美团,搜狐

二、特性

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版本以后支持分布式

三、下载安装

1、下载源码包:wget http://download.redis.io/releases/redis-5.0.7.tar.gz

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)  评论(0)    收藏  举报