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
image.png
搜索redis,查看redis信息是否为想要安装的软件
image.png
install安装,同时安装需要的依赖,安装完成查看信息

Windows安装Redis

微软在github上有开源版本的redis,但是貌似不提供更新了
https://github.com/microsoftarchive/redis
image.png

配置、启动、操作、关闭Redis

安装目录

rpm -ql redis 获得redis所有文件与目录所在完整文件名
image.png

配置目录

配置文件地址如下
image.png

shell命令

redis的所有shell文件
image.png

  • redis-server:启动redis服务端
  • redis-cli:名命令客户端
  • redis-benchmark:Redis基准测试工具
  • redis-sentinel:启动Redis Sentinel
  • redis-check-aof:AOF持久化文件检测和修复工具
  • redis-check-rdb:RDB持久化文件检测和修复工具

启动Redis

Redis启动有三种方式:默认配置、运行配置、配置文件启动
建议以运行配置文件启动的方式运行

  • 默认配置:redis-server
    image.png

  • 运行配置启动:redis-server --configKey1 configValue1 --configKey2 configValue2 --configKey3 configValue3
    例如以6380端口启动Redis:redis-server --port 6380
    image.png

  • 配置文件启动:redis-server 文件全路径名
    例如 redis-server
    image.png
    Redis有60多个配置,基础配置如下:

  • port:端口

  • logfile:日志文件

  • dir:Redis工作目录(存放持久化文件和日志文件)

  • daemonize:是否以守护进程的方式启动Redis

Redis命令行客户端

redis-cli 可以使用两种方式连接Redis服务器:交互式方式、命令方式

  • 交互式方式:redis-cli -h [ip] -p [port]
    例如redis-cli -h localhost -p 6379
    image.png
    启动后不需要在执行redis-cli

  • 命令方式:redis-cli -h [ip] -p [port] [command]
    例如redis-cli -h localhost -p 6379 set hello world
    image.png

注意:如果没有-h则默认本地localhost 127.0.0.1,如果没有-p则默认6379端口

停止Redis服务

  • redis-cli 进入客户端后输入shutdown
  • redis-cli shutdown
  • redis-cli shutdown nasave|save 生成持久化文件
  • kill -15/9 PID
    image.png

详细命令可以用man redis-cli 或 redis-cli --help

Redis重大版本

image.png
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

这个家伙很懒,啥也没有留下😋