Redis初识学习(一)

2021-11-15 17:43:09 浏览数 (1)

1 redis 初始

1.1 redis是什么

  • 开源的
  • 具有多种数据结构
  • 高性能key-value服务器
  • 高性能,功能丰富(pipeline,发布订阅,位图等等)
  • 高可用分布式支持
  • codis
  • Twemproxy

1.2 redis的特性介绍

1.2.1 速度快

官方测试数据是:10w OPS(每秒处理10万的读写)

  • Redis的数据是存储于内存中
  • Redis是使用C语言编写的,代码也只有50000多行
  • Redis是单线程的线程模型å

Redis速度快的最主要的原因是存储的介质:

register

fast

small

expensive

一级缓存

二级缓存

基于内存

本地磁盘

远程磁盘

slow

big

cheap

比较常见存储类型的读写

类型

每秒读写次数

随机读写延迟

访问带宽

内存

千万级

80ns

5GB

SSD盘

35000

0.1-0.2ms

100~300MB

机械盘

100左右

10ms

100MB左右

1.2.2 持久化

redis所有的数据保存在内存中,对数据的更新将异步地保存在磁盘上

1.2.3 支持多种数据结构

字符串,哈希,列表,集合,有序集合;

在后期的版本中衍生出了一些数据类型如:

  • 位图(bitmaps)
  • HyperLogLog: 超小内存唯一值计数
  • GEO: 地图信息定位,可以用于计算经度纬度。
1.2.4 支持多种编辑语言
  • ruby , python , go , java,php
1.2.5 功能丰富
  • 发布订阅
  • 支持lua脚本
  • 支持简单的事务功能
  • 支持pipeline,写一写并发脚本的功能
1.2.6 简单
  • 不依赖外部库(like libevent)
  • 单线程的进程模型
1.2.7 主从复制
1.2.8 高可用,分布式
  • 高可用: redis-sentinel(v2.8)支持高可用
  • 分布式: redis-cluster(3.0)支持分布式

1.3 redis典型的应用场景

  • 缓存系统
  • 充当cache层
  • 计数器
  • 排行榜
  • 消息队列系统
  • redis实现的分布订阅这样的消息队列系统
  • 社交网络
  • 实时系统
  • 垃圾邮件处理系统
  • 过滤处理系统

1.4 redis安装

1.4.1 编译安装

代码语言:javascript复制
wget http://download.redis.io/releases/redis-3.0.6.tar.gz
tar xf redis-3.0.6.tar.gz
mv redis-3.0.6 /usr/local/cd /usr/local/
ln -s redis-3.0.6 redis
make && make install
root# which redis-server/usr/local/bin/redis-server# 运行redis服务,直接执行redis-server即可redis-server# 客户端连接redis-cli -h127.0.0.1 -p6379

6379是redis的默认端口,据说是redis的老式手机的键盘上敲打一个女歌手的名字时按到的数字; 1.4.1.1 验证服务运行

代码语言:javascript复制
# 1ps -ef |grep redis# 2netstat -tunlp |grep redis# 3redis-cli -hlcoalhost -p6379 ping
1.4.1.2 redis可执行文件的说明
  • Redis-check-aof: aof文件修复工具
  • Redis-check-dump: rdb文件检查工具
  • Redis-sentinel: sentinel服务器(2.8以后)

1.4.2 redis启动方式

  • 直接运行redis-server
代码语言:javascript复制
redis-server
  • 动态参数启动redis
代码语言:javascript复制
redis-server --port 6380[root@devops-node4 ~]# ps -ef |grep redis | grep -v greproot       6619   3438  0 00:07 pts/0    00:00:00 redis-server *:6379root       6627   6442  1 00:07 pts/1    00:00:00 redis-server *:6380
  • 使用配置文件启动redis
  • 生产环境建议使用模式,比如多实例配置的时候使用配置文件启动比较方便
代码语言:javascript复制
cd /usr/local/redis/
mkdir config/data -pv
cp redis.conf config/redis6381.conf
cat config/redis6381.conf
daemonize yes
port 6381dir "/usr/local/redis/config/data"logfile "6381.log"[root@devops-node4 ~]# redis-server /usr/local/redis/config/redis6381.conf [root@devops-node4 ~]# ps -ef |grep redis |grep -v greproot       6619   3438  0 00:07 pts/0    00:00:00 redis-server *:6379root       6627   6442  0 00:07 pts/1    00:00:00 redis-server *:6380root       6912      1  2 00:15 ?        00:00:00 redis-server *:6381# 查看日志是否写入[root@devops-node4 data]# cat /usr/local/redis/config/data/6381.log |grep 6381|`-._`-...-` __...-.``-._|'` _.-'|     Port: 63816912:M 28 Feb 00:15:50.488 * The server is now ready to accept connections on port 6381

1.4.3 客户端返回值

  • 状态回复 ping
  • 错误回复 hget hello field
  • 整数回复 incr hello
  • 字符串回复 get hello
  • 多行字符串回复 mget hello foo

1.4.4 redis常用配置

  • daemonize: 是都运行在后台进程
  • port: 指定运行的端口
  • logfile: redis日志文件文件名
  • dir: redis工作目录
  • RDB config的配置
  • AOF config的配置
  • slow log config的配置
  • maxMemory等等
代码语言:javascript复制
# 在redis服务中查看所有的配置项redis> config get *

未完待续。。。

0 人点赞