redis初学者教程—带你进入不一样的世界

这是一篇全面的Redis初学者教程,涵盖了Redis的基本概念、作者背景、使用场景、安装启动、客户端操作、数据结构(strings, lists, sets, sorted sets, hashes)、持久化(RDB和AOF)、主从复制、事务处理以及配置详解。教程详细解释了Redis的每个方面,适合想要深入了解Redis的开发者阅读。" 103331967,5686716,k3s离线安装:预加载容器镜像详细指南,"['k3s', 'kubernetes', '离线安装', '容器镜像', '预加载']
摘要由CSDN通过智能技术生成

目录

【redis是什么】

【redis的作者何许人也】

【谁在使用redis】

【学会安装redis】

【学会启动redis】

【使用redis客户端】

【redis数据结构 – 简介】

【redis数据结构 – strings】

【redis数据结构 – lists】

【redis数据结构 – 集合】

【redis数据结构 – 有序集合】

【redis数据结构 – 哈希】

【聊聊redis持久化 – 两种方式】

【聊聊redis持久化 – RDB】

【聊聊redis持久化 – AOF】

【聊聊redis持久化 – AOF重写】

【聊聊redis持久化 – 如何选择RDB和AOF】

【聊聊主从 – 用法】

【聊聊主从 – 同步原理】

【聊聊redis的事务处理】

【教你看懂redis配置 – 简介】

【教你看懂redis配置 -通用】

【教你看懂redis配置 – 快照】

【教你看懂redis配置 – 复制】

【教你看懂redis配置 – 安全】

【教你看懂redis配置 -限制】

【教你看懂redis配置 – 追加模式】

【教你看懂redis配置 – LUA脚本】

【教你看懂redis配置 – 慢日志】

【教你看懂redis配置 – 事件通知】

【教你看懂redis配置 – 高级配置】


【redis是什么】

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。

redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地)

目前,Vmware在资助着redis项目的开发和维护。

【redis的作者何许人也】

redis的作者,他叫Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。目前供职于Pivotal公司。

他使用的网名是antirez,如果你有兴趣,可以去他的博客逛逛,地址是antirez.com,当然也可以去follow他的github,地址是http://github.com/antirez

【谁在使用redis】

Blizzard、digg、stackoverflow、github、flickr …

【学会安装redis】

从redis.io下载最新版redis-X.Y.Z.tar.gz后解压,然后进入redis-X.Y.Z文件夹后直接make即可,安装非常简单。

make成功后会在src文件夹下产生一些二进制可执行文件,包括redis-server、redis-cli等等:


 
 
 
  1. $ find . -type f -executable
  2. ./redis-benchmark //用于进行redis性能测试的工具
  3. ./redis-check- dump //用于修复出问题的dump.rdb文件
  4. ./redis-cli //redis的客户端
  5. ./redis-server //redis的服务端
  6. ./redis-check-aof //用于修复出问题的AOF文件
  7. ./redis-sentinel //用于集群管理

 

【学会启动redis】

启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件:

./redis-server ../redis.conf
 
 
 


默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。

 

有关作者为什么选择6379作为默认端口,还有一段有趣的典故,英语好的同学可以看看作者这篇博文中的解释。

作者博文:http://antirez.com/post/redis-as-LRU-cache.html

【使用redis客户端】

我们直接看一个例子:


 
 
 
  1. //这样来启动redis客户端了
  2. $ ./redis-cli
  3. //用set指令来设置key、value
  4. 127.0. 0.1: 6379> set name "roc" 
  5. OK
  6. //来获取name的值
  7. 127.0. 0.1: 6379> get name 
  8. "roc"
  9. //通过客户端来关闭redis服务端
  10. 127.0. 0.1: 6379> shutdown 
  11. 127.0. 0.1: 6379>

【redis数据结构 – 简介】

redis是一种高级的key:value存储系统,其中value支持五种数据类型:

1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)

而关于key,有几个点要提醒大家:

1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
2.key也不要太短,太短的话,key的可读性会降低;
3.在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。

【redis数据结构 – strings】

有人说,如果只使用redis中的字符串类型,且不使用redis的持久化功能,那么,redis就和memcache非常非常的像了。这说明strings类型是一个很基础的数据类型,也是任何存储系统都必备的数据类型。

我们来看一个最简单的例子: 


 
 
 
  1. set mystr "hello world!" //设置字符串类型
  2. get mystr //读取字符串类型


字符串类型的用法就是这么简单,因为是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储。

 

另外,我们还可以通过字符串类型进行数值操作:


 
 
 
  1. 127.0. 0.1: 6379> set mynum "2"
  2. OK
  3. 127.0. 0.1: 6379> get mynum
  4. "2"
  5. 127.0. 0.1: 6379> incr mynum
  6. (integer) 3
  7. 127.0. 0.1: 6379> get mynum
  8. "3"

看,在遇到数值操作时,redis会将字符串类型转换成数值。

由于INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果,假如,在某种场景下有3个客户端同时读取了mynum的值(值为2),然后对其同时进行了加1的操作,那么,最后mynum的值一定是5。不少网站都利用redis的这个特性来实现业务上的统计计数需求。

【redis数据结构 – lists】

redis的另一个重要的数据结构叫做lists,翻译成中文叫做“列表”。

首先要明确一点,redis中的lists在底层实现上并不是数组,而是链表,也就是说对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。

虽然lists有这样的优势,但同样有其弊端,那就是,链表型lists的元素定位会比较慢,而数组型lists的元素定位就会快得多。

lists的常用操作包括LPUSH、RPUSH、LRANGE等。我们可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素。我们来看几个例子:


 
 
 
  1. //新建一个list叫做mylist,并在列表头部插入元素"1"
  2. 127.0. 0.1: 6379> lpush mylist "1" 
  3. //返回当前mylist中的元素个数
  4. (integer) 1 
  5. //在my
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值