专栏首页微服务Redis应用及安装

Redis应用及安装

Redis听到最多的一句话就是Redis的使用难吗?不难,Redis用好容易吗?不容易,有时候觉得这句话说的挺好,但又是让读者挺心里咯噔一下的,还不如不说!

概述简介

Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,哈希,列表,集合,具有范围查询的排序集,位图,超级日志和具有半径查询的地理空间索引。Redis具有内置复制,Lua脚本,LRU逐出,交易和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性,并通过Redis Cluster自动分区。 往简单的说就是:Redis是一个开源的Key-Value存储,它具有以下特点:

  • 速度非常快(每个人都知道)
  • 丰富的数据结构,包括String,List,Hash,Set,Sorted Set等
  • 单线程,免了线程切换和锁的性能消耗(搞不懂,整天研究的并发编程在这里不适用?)
  • 原子操作(作为数据库都有)
  • 可持久化(RDB与AOF)
  • 发布/订阅 (个人认为RabbitMQ这方面比较优越,在微服务RPC调用这里,作服务的发现)
  • 支持Lua脚本
  • 分布式锁 (集群的关键)
  • 事务 (作为数据库都有)
  • 主从复制与高可用(Redis Sentinel)
  • 集群(3.0版本以上)

Redis数据结构

建议直接看Redis官网的数据结构,因为从来不想看二手Redis数据结构,这里简单介绍:

  • String 这是最简单的Redis类型。如果只使用这种类型,Redis就像一个可持久化的Memcached服务器。
  • List Redis的List是基于双向链表实现的,可以支持反向查找和遍历。 常用案例:聊天系统、社交网络中获取用户最新发表的帖子、简单的消息队列、新闻的分页列表、博客的评论系统。
  • Hash Hash是一个String类型的field和value之间的映射表,请见下图,类似于.NET中的Hashtable和Dictionary。主要用来存储对象,可以避免序列化的开销和并发修改控制的问题。
  • Set Set也是一个列表,不过它的特殊之处在于它是可以自动排重的:当需要存储一个列表数据,而又不希望出现重复的时候,Set是一个很好的选择(比如ID的集合)。并且Set提供了判断某个成员是否在一个Set集合内的接口,这也是List所没有的。
  • Sorted Set Sorted Set和Set的使用场景类似,区别是Sorted Set会根据提供的score参数来进行自动排序。当你需要一个有序的并且不重复的集合列表,那么就可以选择Sorted Set数据结构。常用案例:游戏中的排行榜。

Redis重要特性

  • 管道 Redis服务是一种C/S模型,提供请求-响应式协议的TCP服务,所以当客户端请求发出,服务端处理并返回结果到客户端,一般是以阻塞形式等待服务端的响应,但这在批量处理连接时延迟问题比较严重,所以Redis为了提升或弥补这个问题,引入了管道技术:可以做到服务端未及时响应的时候,客户端也可以继续发送命令请求,做到客户端和服务端互不干涉影响,服务端并最终返回所有服务端的响应,这在促进原有C/S模型交互的响应速度上有了质的提高。 特点:在C/S交互中,客户端可发送任意数请求命令,不需要等服务端响应后再行发送请求;而服务端可以一次性完成并返回所有客户端请求结果,也可以分批次返回请求结果,这主要看服务端处理结果的速度而定。
  • 事务 Redis事务是一组命令的集合。一个事务中的命令要么都执行,要么都不执行。如果命令在运行期间出现错误,不会自动回滚。 管道与事务的区别:管道主要是网络上的优化,客户端缓冲一组命令,一次性发送到服务器端执行,但是并不能保证命令是在同一个事务里面执行;而事务是原子性的,可以确保命令执行的时候不会有来自其他客户端的命令插入到命令序列中。

常见应用问题

  • 缓存穿透处理 什么是缓存穿透?当根据Redis key在缓存中查询后,不存在对应Value,就应该会在后端系统如DB中去查找,该Key的并发请求量一旦变大,那么就会对DB造成很大的压力。解决办法有:a.前端风险控制,将恶意穿透情况排除在外;b.对查询结果为空的情况依然进行缓存,但缓存时间会设置得很短,一般是几分钟。
  • 缓存雪崩处理 什么是缓存雪崩?当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。解决办法有:后端连接数限制,错误阈值限制,超时处理,缓存失效时间均匀分布,前端永不失效及后端主动更新。
  • 缓存时长 策略定位复杂,需要多维度的计算。
  • 缓存失效 按时失效,事件失效,后端主动更新。
  • 缓存Key Hash、规则、前缀+Hash,异常情况可人工干预。
  • Lua脚本 服务端批量处理及事务能力,有条件逻辑的可扩展脚本。使用它的好处有:减少网络开销、原子操作、可复用。
  • Limit 可滑动时间窗口,如应用于Session,Memcached需每次传Key和Value。

Redis简单介绍安装(Centos)

下载地址,建议生产环境使用稳定版 1、 确保已经安装有编译工具make

没有安装make可以使用:

yum install make -y

2、开始安装 RedisDesktopManage:页面效果:

RedisDesktopManage下载地址:https://redisdesktop.com/ Redis官网:https://redis.io/ Redis安装推荐博客:http://blog.csdn.net/lc1010078424/article/details/78295482 很多其它博客写的是真的垃圾!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 全面解读NoSQL数据库Redis的核心技术与应用实践

    互联网和Web的蓬勃发展正在改变着我们的世界,随着互联网的不断发展和壮大,企业数据规模越来越大,并发量越来越高,关系数据库无法应对新的负载压力,随着Hadoop...

    牛嗷嗷
  • 高可用Redis服务架构分析与搭建

    基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据...

    牛嗷嗷
  • Linux系统Java环境安装配置

    jdk安装配置 首先下载JDK和JRE,这里你的需要看看你的Linux系统是多少位的,比如我的是64位的: ? 下载JDK并指定到Download目录,...

    牛嗷嗷
  • 新生命Redis组件(.Net Core 开源)

    NewLife.Redis 是一个Redis客户端组件,以高性能处理大数据实时计算为目标。 Redis协议基础实现Redis/RedisClient位于X组件,...

    大石头
  • 你好 Redis,能回答我 7 个问题吗?

    Redis 的通讯协议是文本协议,是的,Redis 服务器与客户端通过 RESP(Redis Serialization Protocol)协议通信。

    帅地
  • Redis高频面试题

    Redis,全称:Remote Dictionary Server,是一个基于内存的高性能key-value数据库,是应用服务提高效率和性能必不可少的一部分,因...

    小闫同学啊
  • Redis专题(1):构建知识图谱

    思考:很明显,小明同学在面试过程中关于Redis的表现和回答肯定是比较失败的。Redis是我们工作中每天都会使用到的东西,为什么一到面试却变成了丢分项呢?

    宜信技术学院
  • 硬货 | Redis 性能问题分析

    嘿,我是咸鱼,之前给大家推荐过关于 redis 的不少干货,这次再一起学习一下 Redis 的性能分析。

    咸鱼学Python
  • 在CentOS 7上安装和配置Redis

    Redis是一个开源的内存数据结构存储库,具有用于持久性的可选磁盘写入。它可以用作键值数据库,也可以用作缓存和消息代理。Redis具有内置事务,复制和对各种数据...

    GongAo啊_
  • 深度学习|Keras识别MNIST手写数字(一)

    MNIST数据集是收集的手写字体,为单色图像,共有训练集60000项,测试数据集10000项。 建模方法我们使用最简单的神经网络模型,多层感知器(MLP)。

    罗罗攀

扫码关注云+社区

领取腾讯云代金券