一、redis简介
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
1.1、redis特性
1、速度快
官方:10w ops (每秒10万次读写)
数据存储位置:内存(速度快主要原因)
线程模式:单线程
2、持久化
redis所有数据保存在内存中,对数据的更新将异步地保存到磁盘中。
第一种:snapshotting(镜像或快照)也称RDB
第二种:AOF(append-only file 文件追加)。
RDB:镜像模式就是将某个时间段的所有内存数据直接写入硬盘。
AOF:将执行的写命令增量复制到硬盘里面。
3、多种数据结构
redis提供5种主要数据结构:
1.STRING:可以存储字符串、浮点型、整型,如果是字符串可以执行字符串操作,如果是浮点型、整型也可以执行加减操作。redis会识别出它的具体类型。
2.LIST:链表,链表中的每个NODE包含一个字符串。可以对链表进行两端推入、弹出操作。
3.SET:无序集合,不会存在相同的集合元素,集合的交集、并集、差集运算。
4.HASH:键值对的无需散列,增、删、获取键值。
5.ZSET:有序集合,根据一个浮点数分值来排序。
redis新版本衍生数据结构
位图:bitMaps(很小的内存实现高效的存储)
HyperLogLog:超小内存唯一值计数
GEO:地理信息定位(计算经纬度)
4、支持多种编辑语言
java、python、php、ruby、nodejs 等等
5、功能丰富
订阅发布、lua脚本、事务、pipeline(提高客户端的并发效率)
6、简单
redis源码比较简单,可以实现业务定制化
23000代码
不依赖于外部库(like libevent)
单线程模型(无论服务端还是客户端都较容易)
7、主从复制
后续文章详细讲解
8、高可用分布式
后续文章详细讲解
1.2、redis应用场景
应用以下常见场景:
缓存系统
计数器
微博评论,转发计数
incr
消息队列(发布订阅)
排行榜
社交网络
实时系统(垃圾邮件系统)
二、redis安装
redis安装(linux)
redis下载地址:https://github.com/tporadowski/redis/releasesRedis
# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
# tar xzf redis-6.0.8.tar.gz
# cd redis-6.0.8
# make
执行完 make 命令后,redis-6.0.8 的 src 目录下会出现编译后的 redis 服务程序 redis-server,还有用于测试的客户端程序 redis-cli:
下面启动 redis 服务:
# cd src
# ./redis-server
注意这种方式启动 redis 使用的是默认配置。也可以通过启动参数告诉 redis 使用指定配置文件使用下面命令启动。
# cd src
# ./redis-server ../redis.conf
redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动 redis 服务进程后,就可以使用测试客户端程序 redis-cli 和 redis 服务交互了。 比如:
# cd src
# ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
redis可执行文件说明
redis-server:redis服务器
redis-cli:redis命令客户端
redis-benchmark:redis性能测试工具
redis-check-aof:aof文件修复工具
redis-check-dump:rdb文件修复工具
redis-sentinel:sentinel服务器(2.8版本以后)
redis启动方式:
redis-server直接启动
验证方式:ps -ef|grep redis、netstat -antpl | grep redis 、redis-cli -h ip -p port
动态参数启动
redis-server --port (设置端口)
redis-server configpath(配置文件地址)
redis安装(windows)
下载地址:https://github.com/tporadowski/redis/releases。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。
打开文件夹,内容如下:
直接启动redis-server.exe
redis常用配置
redis.conf
daemonize :是否启用线程守护(yes|no)
port:redis对外端口号(默认端口:6379)
logfile:redis系统日志
dir:redis工作目录
requirepass:密码