一马平川
不积跬步无以至千里,后继才能薄发

Redis学习笔记(一):初识redis

2020年01月20日
0
未分类

前言

本节将在Redis这一中间件技术的由来、版本迭代、Redis的基础特性等方面介绍,帮助读者了解Redis,为学习Redis打下基础。

Redis的基础

Redis是什么?

redis(REmote DIctionary Server)是一个基于键值对的数据结构服务器,数据主要存储于内存,被称为NoSql(Not Only sql),可以实现快速的数据读写、数据持久化、分布式部署等功能,实现高可用。

Redis的特性

速度快
  1. 由于Redis使用内存存储,redis可以直接从内存检索数据,对比从磁盘获取读入内存提升大约两个数量级,读写性能可以达到10万/s,具体性能取决于实际机器的配置。
  2. 在内存存储的基础上,Redis采用了单线程架构,因为多线程环境中,可能产生竞争,锁的开销极大,单线程可以简化编程,防止aba问题的出现,由于基于内存存储,单线程也能做到极大的吞吐量。
  3. Redis采用了c语言编写,执行效率更高
  4. 代码优化,Redis的代码优化程度很高,集性能与优雅于一身。
  • 表1-1 谷歌公司给出的各层级硬件执行速度
层级 速度
L1 cache reference 0.5ns
Branch mispredict 5ns
L2 cache reference 7ns
Mute lock/unlock 25ns
Main memory reference 100ns
Compress 1K bytes with Zippy 3,000ns
Send 2K bytes over 1Gbps network 20,000ns
Read 1MB sequentially from Memory 250,000ns
Round trip within same datacenter 500,000ns
Disk seek 10,000,000ns
Read 1MB sequentially from disk 20,000,000ns
Send packet CA->Netherlands->CA 150,000,000ns
基于键值对的数据结构

redis全称REmote DIctionary Server,远程数据字典服务器,描述了Redis的数据组织方式,Redis的数据结构类似字典功能,如Java中的Map、Python里的dict。它主要提供了5种数据结构:字符串、哈希、 列表、 集合、有序集合。同时在字符串的基础上,演变出来了Bitmaps和HyperLogLog两种“数据结构”。

丰富的功能
  1. 键过期
  2. 发布订阅
  3. Lua脚本
  4. 简单事务
  5. 流水线(PineLine)批量执行redis命令
简单稳定
  1. 代码少,3.0版本前2万行左右,3.0后添加了集群5万行左右,开发运维人员可以很快吃透,并自定义优化。
  2. 不依赖操作系统类库,redis自己实现了事务处理的相关功能。
客户端语言支持广泛
  1. Java
  2. Php
  3. Python
  4. C
  5. C++
  6. Node.js
持久化

redis为了防止redis服务宕机,导致数据丢失,提供了AOF和RDB两种持久化策略,在之后的章节中会讲解。

主从复制

redis提供了复制功能,实现多个相同的redis副本。

高可用和分布式

redis官方实现了Redis Cluster,国内多使用Codis作为redis的分布式集群。

如果喜欢这篇文章,可以给作者评个份哦~

原文声明: "转载本站文章请注明作者和出处Nothinglin ,请勿用于任何商业用途"

公众号:苦逼的学生仔