Redis全称为Remote Dictionary Server(远程字典服务)
盛赞Redis
- Redis是一种基于键值对(K-V)的NoSQL数据库,其中V可以由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、HyperLogLog(超对数,计算算法)、GEO(地理信息定位)等多种数据结构和算法组成
- Redis将数据放入内存中,读写性好
- 将内存数据利用快照和日志形式保存到硬盘上,确保数据不会丢失
- 提供键过期、发布订阅、事务、流水线、Lua脚本等功能
Redis特性
速度快
读写性能达到10万/秒
原因:
- 数据存放在内存中
- 使用C语言实现,更高效
- 单线程,预防了多线程可能产生的竞争问题
- 源代码精打细磨,集性能与优雅于一身
基于键值对(key-value)的数据结构服务器
主要提供了:字符串、哈希、列表、集合、有序集合,在此基础上演变出位图(Bitmaps)、HyperLogLog、GEO(地理信息定位)功能
丰富的功能
- 提供键过期功能,可以用来实现缓存
- 提供发布订阅功能,可以用来实现消息系统
- 提供了Lua脚本功能,可以创造出新的Redis命令
- 提供简单事务功能,在一定程度上保证事务特性
- 提供了流水线(Pipeline)功能,客户端可以将一批命令一次性传到Redis,减少了网络开销
简单稳定
体现在三个方面
- Redis的源码很少,早期只有2万行,3.0版本后添加集群特性,代码增至5万行
- Redis使用单线程模型,服务端处理模型变得简单,客户端开发变得简单
- Redis不需要依赖于操作系统中的类库,自己实现事件处理能力
客户端语言多
提供TCP通信协议,很多编程语言可以很方便接入到Redis
持久化
提供了2种持久化方式:RDB和AOF,可以将内存数据保存到硬盘种
主从复制
提供了复制功能,实现多个相同数据的Redis副本,是分布式Redis基础
高可用和分布式
- 高可用:Redis Sentinel,保证Redis节点的故障发现和故障自动转移
- 分布式:Redis Cluster,提供了高可用、读写和容量的扩展
Redis 使用场景
Redis可以做什么
缓存
Redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。
合理使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力。
排行榜系统
Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统(热度排行、发布时间排行等)。
计数器应用
Redis天然支持计数功能而且计数地性能也非常好。
视频网站播放数、电商网站浏览数等数据等实时性
社交网络
Redis提供地数据结构可以比较容易实现这些功能。
例如 赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等
Redis不可以做什么
大规模数据
数据可以分为大规模数据和小规模数据,Redis数据存放在内存中,使用Redis来储存大规模数据经济成本相当高
冷数据
数据分为冷热数据,热点数据被频繁操作,可以放在Redis中加速读写,也可以减轻后端储存地负载。冷数据放在Redis中则基本上是对内存的浪费
使用好Redis 的建议
- 切勿当作黑盒使用
- 阅读源码
正确安装并启动Redis
Linux 上安装Redis
建议使用软件管理工具安装,省事,方便管理
我的是CentOS使用yum
搜索redis,查看redis信息是否为想要安装的软件
install安装,同时安装需要的依赖,安装完成查看信息
Windows安装Redis
微软在github上有开源版本的redis,但是貌似不提供更新了
https://github.com/microsoftarchive/redis
配置、启动、操作、关闭Redis
安装目录
rpm -ql redis 获得redis所有文件与目录所在完整文件名
配置目录
配置文件地址如下
shell命令
redis的所有shell文件
- redis-server:启动redis服务端
- redis-cli:名命令客户端
- redis-benchmark:Redis基准测试工具
- redis-sentinel:启动Redis Sentinel
- redis-check-aof:AOF持久化文件检测和修复工具
- redis-check-rdb:RDB持久化文件检测和修复工具
启动Redis
Redis启动有三种方式:默认配置、运行配置、配置文件启动
建议以运行配置文件启动的方式运行
-
默认配置:redis-server
-
运行配置启动:redis-server --configKey1 configValue1 --configKey2 configValue2 --configKey3 configValue3
例如以6380端口启动Redis:redis-server --port 6380
-
配置文件启动:redis-server 文件全路径名
例如 redis-server
Redis有60多个配置,基础配置如下: -
port:端口
-
logfile:日志文件
-
dir:Redis工作目录(存放持久化文件和日志文件)
-
daemonize:是否以守护进程的方式启动Redis
Redis命令行客户端
redis-cli 可以使用两种方式连接Redis服务器:交互式方式、命令方式
-
交互式方式:redis-cli -h [ip] -p [port]
例如redis-cli -h localhost -p 6379
启动后不需要在执行redis-cli -
命令方式:redis-cli -h [ip] -p [port] [command]
例如redis-cli -h localhost -p 6379 set hello world
注意:如果没有-h则默认本地localhost 127.0.0.1,如果没有-p则默认6379端口
停止Redis服务
- redis-cli 进入客户端后输入shutdown
- redis-cli shutdown
- redis-cli shutdown nasave|save 生成持久化文件
- kill -15/9 PID
详细命令可以用man redis-cli 或 redis-cli --help
Redis重大版本
Redis借鉴Linux命名版本规则,版本号第二位如果是奇数则为非稳定版本,偶数为稳定版本。我的Redis版本为3.2为稳定版本。
现在Redis使用版本较多为3.0,3.2,4.0
Redis 3.0
2015年4月1发布
最大的改动为Redis的分布式实现Redis Cluster,填补了Redis官方没有分布式实现的空白
Redis 3.2
2016年5月6日发布
- 添加GEO功能及其他功能
Redis 4.0
- 提供模块系统,方便扩展Redis功能
- Redis Cluster 兼容NAT 和Docker
Comments | 0 条评论