Redis 初次见面
目录
- Redis 特性
- 使用场景
- 初次使用
安装(Linux)
配置
启动 redis 的 3 种方法
使用 redis 客户端
关闭 redis 服务 - Redis 版本说明
- 引用
1 Redis 特性
- 速度快(基于内存,C 语言,单线程)
- 基于 key value 键值对的数据结构服务器。全称 Remote Dictionary Server。包含 String,Hash, List, Set, SotrSet. 同时在字符串的基础上演变出位图(BitMaps) 和 HyperLogLog 两种数据数据结构。3.2 版本中加入 GEO(地理信息位置)。
- 丰富的功能。例如:键过期(缓存),发布订阅(消息队列), Lua 脚本(自己实现 Redis 命令),事务,流水线(Pipeline 减少网络开销)。
- 简单稳定。
- 客户端语言多。
- 持久化(RDB,AOF)。
- 主从复制(分布式的基础)。
- 高可用(Sentinel)和分布式(Cluster)。
2 使用场景
缓存
合理的使用缓存能够明显加快访问的速度,同时降低数据源的压力。这也是 Redis 最常用的功能。Redis 提供了键值过期时间(
EXPIRE key seconds
)设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。排行榜
每个网站都有自己的排行榜,例如按照热度排名的排行榜,发布时间的排行榜,答题排行榜等等。Redis 提供了列表(List)和有序集合(sorted set)数据结构,合理的使用这些数据结构可以很方便的构建各种排行榜系统。
计数器
计数器在网站应用中非常重要,例如,点赞数加一,浏览数加一,还有常用的限流操作,限制每个用户每秒访问系统的次数等等,Redis 支持计数功能(INCR key)而且计数的性能也非常好,计数的同时也可以设置超时时间,这样就可以实现限流。
社交网络
赞/踩,粉丝,共同好友/喜好,推送,下拉刷新等是社交网站必备的功能,由于社交网站访问量通常比较大,而且传统的数据库不太适合保存这类数据,Redis 提供的数据结构可以相对比较容易实现这些功能。链接:Redis实战:如何构建类微博的亿级社交平台
消息队列
Redis 提供的发布订阅(PUB/SUB) 和阻塞队列(blpop key1...keyN timeout )的功能,虽然和专业的消息队列比,还不够强大,但对于一般的消息队列功能基本满足。
3 初次使用
- 安装(Linux)
Centos yum install redis - 配置
安装完成之后,会在 /usr/local/bin 目录目录下,多出几个可执行文件,称之为 redis shell。如下:
可执行文件 | 作用 |
---|---|
redis-server | 启动 redis 服务 |
redis-cli | redis 命令行客户端 |
redis-benchmark | redis 基准测试工具 |
redis-check-aof | redis AOF 持久化文件检测和修复工具 |
redis-check-dump | redis RDB 持久化文件检测和修复工具 |
redis-sentinel | 启动 redis sentinel |
- 启动 redis 的 3 种方法
3.1 配置文件启动
将配置写到配置文件中,例如写到 /opt/redis/redis.conf 中,执行 redis-server /opt/redis/redis.conf 即可启动 redis。redis 有 60 多个配置,常用的是:port(端口),logfile(日志文件),dir(redis 工作目录,存放持久化文件和日志文件),daemonize(是否以守护进程的方式启动 redis)。
3.2 运行启动
在 redis-server 后面加入参数,格式为:redis-server --configkey1 configvaue1 --configkey2 configvalue2. 例如:redis-server --port 6380 ,即,将端口自定义为 6380.
3.3 默认启动
直接 redis-server,默认端口 6379.
如果是生产环境的话,通常建议使用配置文件的方式启动。
- 使用 redis 客户端
redis 客户端可以通过设置 ip 端口,连接 redis 服务器并执行命令。而使用redis-cli 的方式有 2 种。
4.1 交互式方式
通过 redis cli -h [host] -p [port] 的方式连接到 reids 服务。
4.2 命令式方式
通过 redis-cli -h [host] -p [port] [command] 就可以,是一次性的。
注意:如果不指定 host,port ,默认连接 127.0.0.1:6379.
- 关闭 redis 服务
redis 提供了 shutDown 命令来停止 redis 服务,例如停掉127.0.0.1:6379 服务,使用:redis-cli shutdown 即可。
注意点:
- redis 关闭的过程:断开和客户端的连接,持久化文件生成。相对而言比较优雅。
- 不用使用 kill -9,过于粗暴,不但不会做持久化操作,还会造成缓冲区等资源不会优雅关闭。极端情况下造成 AOF 和复制丢失数据的情况。
- shutdown 还有一个参数,代表是否在关闭 redis 前,生成持久化文件:
redis-cli shutdown nosave|save
4 Redis 版本说明
redis 借鉴了 Linux 对于版本号的命名规则,版本号第二位如果是奇数,则为非稳定版本,如果是偶数,则为稳定版本。当前奇数版本就是下一个稳定版本的开发版本。
重大版本:2.8 提升了 sentinel 的可用性,使其可在生产环境使用;3.0 版本最大的功能:添加了分布式 Redis Cluster,填补了官方没有分布式实现的空白(之前都是用户自己实现的 sharding)。
5 引用
《Redis 开发与运维》
Redis 初次见面的更多相关文章
- 使用redis构建可靠分布式锁
关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了. 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下 1. 数据库实现方式 优点:易理解 缺 ...
- Ignite性能测试以及对redis的对比
测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...
- mac osx 安装redis扩展
1 php -v查看php版本 2 brew search php|grep redis 搜索对应的redis ps:如果没有brew 就根据http://brew.sh安装 3 brew ins ...
- Redis/HBase/Tair比较
KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式 支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...
- Redis数据库
Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有 ...
- redis 学习笔记(2)
redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ...
- redis 学习笔记(1)
redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格 ...
- python+uwsgi导致redis无法长链接引起性能下降问题记录
今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ...
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...
随机推荐
- c语言构建哈希表
/*哈希查找 *哈希函数的构造方法常用的有5种.分别是: *数字分析法 *平方取中法 *分段叠加 *伪随机数 *除留取余法 *这里面除留取余法比较常用 *避免哈希冲突常用的方法有4种: *开放定址法( ...
- 洛谷P1886--滑动窗口(单调队列模板)
https://www.luogu.org/problemnew/show/P1886 单调队列的操作上比普通队列多了可以从尾端出队 单调队列保持队内元素单调递增/递减,以保证队首元素为最小/最大元素 ...
- ubuntu+apache2设置访问、重定向到https
环境:ubunt14裸机,apache2,php5 条件:证书(部分商家买域名送一年),域名,为了方便均在root用户下进行的 web目录:/var/www/test 证书目录(自建):/etc/ap ...
- Exp4 恶意代码分析 ——20164325王晓蕊
1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systracer套件 ...
- 关于c++的一篇随笔
众所周知c++是一门极其深奥的学科,正因为其深奥之处,才会让人们觉得学习起来特别难.当然,我想说我自己也不例外,想起当初就像一场噩梦一样,直到今日还历历在目.尽管如此,c++还是一门相当有魅力的课程, ...
- C#介绍RabbitMQ使用篇一HelloWorld
RabbitMQ官网官方介绍: 译文: RabbitMQ是目前部署最广泛的开源消息代理(何为代理?可以理解为一个提供功能服务的中间件). 在全球范围内的大小企业中的生产环境中,RabbitMQ的部署两 ...
- Jenkins初级使用过程中的异常处理(1)
在使用Jenkins一些基本功能的时候,或者说是基本插件的时候,会遇到各种各样的报错.这里就设想模拟一下,重现一下以前遇到过的问题,记录一下.虽说是Jenkins使用过程中出现这样的问题,但实际上可以 ...
- Android开发 - 掌握ConstraintLayout(七)辅助线(Guideline)
了解过UI设计的同学都知道,在设计的时候,我们经常在界面上拖进一些辅助线来帮我们对齐UI元素,或者方便我们统一的页边距. 在ConstraintLayout的编辑器中,同样也支持这样的功能,我们可以创 ...
- pwnable.kr详细通关秘籍(二)
i春秋作家:W1ngs 原文来自:pwnable.kr详细通关秘籍(二) 0x00 input 首先看一下代码: 可以看到程序总共有五步,全部都满足了才可以得到flag,那我们就一步一步来看 这道题考 ...
- Android Studio 常见问题及解决方法
一.Error:All flavors must now belong to a named flavor dimension 问题描述: Error:All flavors must now bel ...