关注

Redis(1) 初识Redis


前言

本篇会简单介绍下Redis的特性, Redis适合与不适合的工作以及Redis客户端的连接命令

1. 初识Redis

Redis是一种基于键值对(key-value)的NoSql数据库, Redis会将所有数据都存在内存中, 所以他的读写性很强. Redis键值对中的值可以是很多种数据结构和算法组成, 因此可以满足很多应用场景

1.2. Redis特性

1.2.1 速度快

Redis执行命令的速度非常快, 我们可以简单分析下为什么Redis如此之快
Redis所有数据都是存放在内存中的
Redis是用C语言实现的, C语言距离操作系统较近, 执行速度会相对更快
Redis使用了单线程, 预防了多线程可能产生的竞争问题
Redis的源码写的非常优雅

1.2.2 简单稳定

Redis源码很少, 早期只有2万行左右, 再添加集群特性后, 代码增加至5万行左右, 意味着运维人员和开发人员方便阅读他. 其次, Redis使用的是单线程模型, 不仅使服务端处理模型变得简单, 还使客户端开发也变得容易. 最后Redis不需要依赖于操作系统中的类库, Redis自己实现了事务处理相关的功能.
这些都使得Redis在使用过程中, 很少因为自身Bug导致服务宕掉.

1.2.3 功能丰富

不同于很多键值对数据库, Redis的值不仅可以是字符串, 还可以是具体的数据结构, 既便于在许多应用场景开发, 又能提高开发效率
除了五种数据结构, Redis还提供了许多额外功能
提供了键过期功能, 可以用来实现缓存
提供了发布订阅功能, 可以用来实现消息系统
支持Lua脚本功能, 可以用Lua创造出新的Redis指令
提供了简单的事务功能, 能一定程度上保持事务特性
提供了流水线功能, 客户端可以一次性传多个Redis指令, 减少了网络开销

1.2.4 客户端语言多

Redis提供了简单的TCP通信协议, 方便很多编程语言接入, 受认可度高, 支持Redis的客户端语言也很多, 几乎涵盖了主流编程语言

1.2.5 持久化

通常我们知道数据存在内存中是不安全的, 一掉电或故障就可能丢失数据, 因此Redis提供了两种持久化的方式, 后续会介绍

1.2.6 主从复制

Redis提供了复制功能, 实现了多个相同数据的Redis副本, 复制功能是分布式Redis的基础

1.2.7 高可用和分布式

Redis 提供了⾼可⽤实现的Redis哨兵),能够保证Redis结点的故障发现和故障⾃动转移。也提供了Redis集群,是真正的分布式实现,提供了⾼可⽤、读写和容量的扩展性

1.3. Redis可以做什么

说了Redis的种种特性, 这些特性就决定了Redis可以胜任很多工作
缓存: 几乎所有大型网站都会使用缓存, 合理使用缓存不仅可以加快数据访问速度, 还能减低数据源的压力. Redis的键值过期时间设置, 灵活控制最大内存和内存溢出后的淘汰策略等, 都非常适合作为缓存来使用
排行榜系统: 按热度排行, 按发布时间排行, 或按照各种复杂维度计算出的排行榜. 合理运用Redis提供的数据结构, 可以很方便的构建各种排行榜系统
计数器应用: 网站的播放数, 电商的浏览数等等, Reids天然支持计数功能而且计数性能也非常好
社交网络: 赞/踩, 粉丝, 共同好友, 下拉刷新等等社交网站必备功能, 传统的关系数据不太适合保存这种数据, Redis提供的数据结构可以相对比较容易地实现这些功能
消息队列系统: 消息队列可以业务解耦, 非实时业务削峰等, Redis提供了发布订阅和阻塞队列的功能, 虽然和专业消息队列相比不够强大, 但对一般消息队列的基本功能可以满足

1.4 Redis不能做什么

在互联网领域, 往往并不存在万金油的技术, 对于Redis来说, 也有很多不适合它解决的问题.
在数据规模的角度: 数据可以分为大规模数据和小规模数据, 我们知道Reids的数据是存在内存中的, 虽然内存目前并不算太贵, 但是如果数据量⾮常⼤,例如每天有⼏亿的⽤⼾⾏为数据,使⽤Redis来存储的话,经济成本会相当的⾼
在数据冷热角度: 数据分为热数据和冷数据,热数据通常是指需要频繁操作的数据,反之为冷数据,如果将这些冷数据放在Redis上,基本上是对于内存的⼀种浪费,但是对于⼀些热数据很适合放在Redis中加速读写,也可以减轻后端存储的负载,可以说是事半功倍

2. Redis的连接

接下会介绍如何使用redis-cli连接redis服务, 一般会有两种方式连接到redis服务器

  1. 交互式方式:
redis-cli -h {host} -p {port}
#redis-cli -h 127.0.0.1 -p 6379 
  1. 命令方式:
redis-cli -h {host} -p {port} {command}
#redis-cli -h 127.0.0.1 -p 6379 set key hello 

这种方式得到的就是命令的返回结果
此外, 这两种方式的-h {host} -p {port}都是可以省略的, 会使用默认host 127.0.0.1, 默认port 6379
redis客户端和服务器交互的过程为: redis客户端发送命令, redis服务端执行命令, redis服务端向客户端返回结果, redis客户端和服务器之间完全通过网络通信, 后续将继续介绍redis的强大功能

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/Cwb154748854/article/details/153814754

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--