04-Redis
Redis(四)---Redis的命令参考

Redis(四)---Redis的命令参考1、简述数据类型也称数据对象,包含字符串对象(string)、列表对象(list)、哈希对象(hash)、集合对象(set)、有序集合对象(zset)。
2、String数据类型命令string 类型是redis最基础的数据类型,为简单key-value结构,并且value不限制类型,可以是数字,字符,图⽚等序列化对象,value值最⼤不可超过512M。
string类型在使⽤中经常⽤作分布式session共享,计数器,验证码过期,基础数据的缓存等。
在java编码中使⽤都是使⽤封装好的jar包,如spring redis,jedis等等,当封装的⽅法名称与命令⾏直接操作⼤同⼩异,下⾯展⽰命令⾏使⽤:注:redis的命令⽆⼤⼩写区分,但key值严格区分⼤⼩写参数:EX seconds ---- 设置过期时间为秒,例:EX 60PX milliseconds ---- 设置过期时间为毫秒,例:PX 1000NX ---- 只有当key值不存在时才设置XX ---- 只有当key值存在时才设置3、list数据类型命令list数据类型为key-value键值对结构,但是其value值的结构为list,类似java中的队列;左侧为表头,右侧为表尾;结构类似于java的Map<String,List<Object>> list数据类型可以作为消息队列使⽤,还可以作为排名等的缓存,也可以作为缓存分页。
4、hash数据类型hash表数据类型是key-value结构,但是key为String类型,⽽value的结构则是field-value结构;类似于java中的Map<Sring,Map<Stirng,Object>> 结构。
hash表数据结构中field-value 的最⼤存储个数是 232 - 1 个;主要⽤途是作为key-value对象类型的缓存,在value中存储这个对象,取⽤时便于还原对象。
redis使用流程

redis使用流程Redis使用流程概述:Redis是一款开源的内存数据库,具有高性能、持久化、可扩展等特点。
本文将介绍Redis的使用流程,帮助读者快速上手Redis。
1. 安装Redis:需要在本地或服务器上安装Redis。
可以从官方网站下载安装包,并按照指示进行安装。
安装完成后,可以通过命令行输入redis-cli 命令来验证Redis是否安装成功。
2. 连接Redis:Redis默认监听端口为6379,可以使用redis-cli命令连接到Redis 服务器。
在命令行中输入redis-cli后,会进入Redis的交互式命令行界面。
在该界面中,可以输入各种Redis命令进行操作。
3. 设置键值对:Redis是一个键值对数据库,可以使用SET命令来设置键值对。
例如,使用命令SET key value来设置一个键值对,其中key是键,value是值。
可以通过GET命令来获取键对应的值,例如GET key。
4. 存储数据结构:Redis支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合。
可以使用对应的命令来操作这些数据结构。
4.1 字符串:可以使用SET和GET命令来设置和获取字符串类型的值。
4.2 哈希表:可以使用HSET和HGET命令来设置和获取哈希表中的字段和值。
4.3 列表:可以使用LPUSH和RPUSH命令来将值添加到列表的左侧和右侧,使用LPOP和RPOP命令来从列表的左侧和右侧移除值。
4.4 集合:可以使用SADD和SMEMBERS命令来添加和获取集合中的元素,使用SREM命令来移除集合中的元素。
4.5 有序集合:可以使用ZADD和ZRANGE命令来添加和获取有序集合中的元素,使用ZREM命令来移除有序集合中的元素。
5. 持久化:Redis支持持久化数据的功能,可以将数据保存到硬盘上,以便重启后恢复数据。
可以通过配置文件设置持久化方式,包括RDB快照和AOF日志两种方式。
5.1 RDB快照:RDB快照是将当前数据保存到一个二进制文件中。
Redis缓存的原理解析

Redis缓存的原理解析Redis(Remote Dictionary Server)是一款基于内存的开源缓存数据库,广泛应用于互联网项目中。
它具备快速、稳定、可靠的特点,被用来加速数据访问,提高系统性能。
一、Redis缓存的基本原理在解析Redis缓存的原理之前,我们首先要了解什么是缓存。
缓存是指将数据暂时存储在相对较快的介质中,以供随后的访问和使用。
而Redis作为一种缓存数据库,它将数据存储在内存中,因此具有非常高的读写性能。
Redis缓存的基本原理如下:1. 数据存储:Redis使用键值对的方式存储数据,其中键为唯一标识,值为具体的数据内容。
这种存储结构使得Redis能够快速访问和获取数据。
2. 内存存储:Redis将数据存储在内存中,相比传统的基于磁盘的存储方式,内存存储具有更高的读写速度。
同时,Redis还支持将数据持久化到硬盘,以防止数据丢失。
3. 数据缓存:Redis在访问数据时,首先会检查数据是否存在于缓存中。
如果存在,则直接将数据返回,避免了对数据库的频繁访问,提高了系统的响应速度。
4. 数据更新:当缓存中的数据发生变化时,Redis会及时更新缓存,保持缓存数据与源数据的一致性。
二、Redis缓存的应用场景1. 数据库查询缓存:在高并发的数据库操作中,通过Redis缓存查询结果可以减轻数据库的压力,提高系统的查询性能。
2. 页面缓存:将经常变动的页面内容缓存到Redis中,可以减少服务器的负载,提高页面的加载速度。
3. 计数器缓存:通过Redis的计数器功能,可以实现短时间内对某个操作的频率控制,如短信验证码发送次数限制。
4. 分布式缓存:Redis支持分布式部署,可以将数据分散存储在多个节点上,提高系统的可扩展性和容错性。
三、Redis缓存的优势和劣势1. 优势:- 数据高效读写:Redis将数据存储在内存中,读写速度快。
- 直接操作结构化数据:Redis支持多种数据结构,如字符串、哈希、列表等,便于直接操作数据。
redis 数据库基本操作

redis 数据库基本操作Redis 数据库基本操作Redis(Remote Dictionary Server)是一个基于内存的开源数据库,常用作缓存、消息队列和持久化存储。
它支持多种数据结构,如字符串、哈希、列表、集合和有序集合,并提供了丰富的命令集来操作这些数据结构。
本篇文章将一步一步回答关于Redis 数据库的基本操作。
第一步:Redis 数据库的安装和配置首先,我们需要下载并安装Redis 数据库。
官方网站提供了各种版本的Redis 下载,您可以根据系统的要求选择合适的版本进行下载。
安装完成后,我们还需要对Redis 进行一些基本的配置。
Redis 的配置文件位于Redis 安装目录下的redis.conf。
您可以使用文本编辑器打开此文件,根据需要修改其中的参数。
例如,您可以设置Redis 的监听地址和端口、密码验证、持久化方式等。
保存并关闭配置文件后,我们可以打开终端或命令提示符窗口,运行以下命令启动Redis 服务器:redis-server /path/to/redis.conf第二步:连接Redis 数据库在Redis 服务器启动后,我们可以使用Redis 自带的命令行工具redis-cli 来连接到数据库。
打开新的终端或命令提示符窗口,并运行以下命令:redis-cli如果Redis 服务器的地址和端口与默认值不同,您可以使用以下命令连接到指定的Redis 服务器:redis-cli -h host -p port在成功连接到Redis 数据库后,您将看到一个命令行提示符,表示您已经进入了Redis 的交互式终端。
第三步:操作Redis 数据库在进入Redis 的交互式终端后,我们可以使用各种命令对数据进行操作。
下面是一些常用的Redis 命令示例:1. 设置键值对> SET key value通过SET 命令,我们可以将指定的值赋给指定的键。
例如,我们可以使用以下命令设置一个字符串值:> SET name "John Doe"2. 获取键值对> GET key通过GET 命令,我们可以获取指定键的值。
redis使用方法

redis使用方法Redis是一款开源的高性能内存键值存储数据库,它支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合等。
Redis是一种非关系型数据库,它的特点是速度快、可扩展性好、数据持久化、应用场景广泛等。
本文将介绍Redis的使用方法,包括Redis的安装、配置、基本命令、数据结构、事务和持久化等方面。
通过本文的学习,读者可以了解Redis的基本使用方法,为使用Redis提供帮助。
一、Redis的安装Redis的安装可以通过源码编译安装或者使用包管理工具安装。
下面以Ubuntu为例,介绍Redis的安装过程。
1. 使用包管理工具安装Ubuntu系统可以通过apt-get命令安装Redis。
打开终端,输入以下命令:sudo apt-get updatesudo apt-get install redis-server安装完成后,可以通过以下命令查看Redis是否已经安装成功: redis-cli ping如果返回“PONG”表示Redis已经安装成功。
2. 源码编译安装如果需要使用最新版本的Redis,可以通过源码编译安装。
首先需要下载Redis的源码包,可以从Redis官网(https://redis.io/)下载最新版本的源码包。
下载完成后,解压源码包,进入解压后的文件夹,执行以下命令进行编译和安装:makemake install安装完成后,可以通过以下命令启动Redis服务:redis-server二、Redis的配置Redis的配置文件是redis.conf,它包含了Redis的各种配置选项。
在Ubuntu系统中,配置文件位于/etc/redis/redis.conf。
下面介绍一些常用的Redis配置选项。
1. bindbind选项指定Redis监听的IP地址,如果不指定,Redis将监听所有的IP地址。
可以通过以下命令指定Redis监听的IP地址: bind 127.0.0.12. portport选项指定Redis监听的端口号,默认为6379。
redis常见功能

redis常见功能、安装及常见配置Redis常见功能和设置的说明:键值存储:Redis使用键值对来存储数据,其中键是唯一的标识符,值可以是字符串、哈希、列表、集合、有序集合等不同的数据结构。
数据类型:Redis支持多种数据类型,如字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(sorted set)等,每种数据类型都有相应的操作命令。
持久化:Redis支持持久化将数据保存到磁盘上,以便在服务器重启后恢复数据。
它提供了两种持久化方式:RDB(Redis Database)快照和AOF(Append-Only File)日志。
发布/订阅:Redis支持发布和订阅模式,允许多个客户端通过订阅频道来接收发布的消息。
事务:Redis支持事务操作,可以将多个命令放在一个事务中进行原子性执行,保证操作的一致性。
Lua脚本:Redis支持使用Lua脚本执行复杂的操作,可以将多个命令封装为一个脚本进行执行。
过期时间:Redis允许为键设置过期时间,过期后将自动删除该键。
缓存:由于Redis将数据存储在内存中,因此它可以用作高速缓存,提供快速读取和写入操作。
集群:Redis提供了集群模式,可以在多个节点上分布数据,提高系统的容错性和可扩展性。
安全认证:Redis支持密码认证机制,可以设置密码来保护服务器免受未经授权的访问。
以上仅是Redis的一些主要功能和设置的介绍,Redis还提供了许多其他功能和配置选项,您可以查阅Redis官方文档以获取更详细的信息。
redis在线安装要在Ubuntu 20.04上安装Redis并允许远程访问,您可以按照以下步骤进行操作:1)打开终端窗口。
2)使用以下命令更新系统软件包列表:sudo apt update3)安装Redis服务器和客户端:sudo apt install redis-server redis-cli4)安装完成后,Redis服务器将自动启动。
什么是 Redis

什么是Redis?Redis是一个开源的、高性能的键值存储系统。
它被广泛应用于缓存、消息队列、实时分析、计数器和排行榜等场景。
Redis的设计目标是提供快速、可靠和灵活的数据存储解决方案。
以下是Redis的一些关键特性和概念:1. 键值存储:Redis使用简单的键值对(key-value)数据模型来存储数据。
每个键都是一个字符串,每个值可以是字符串、哈希表、列表、集合或有序集合等数据结构。
Redis的键值存储模型非常灵活,可以存储各种类型的数据。
2. 内存数据库:Redis将数据存储在内存中,因此具有极高的读写性能。
它通过将常用的数据放在内存中,以提供低延迟的数据访问。
Redis还支持持久化机制,可以将数据定期写入磁盘,以防止数据丢失。
3. 高性能和低延迟:Redis采用了一些技术来提供高性能和低延迟的数据访问。
它使用了快速的数据结构和算法,如哈希表和跳跃表,以实现快速的读写操作。
此外,Redis还使用了非阻塞的I/O模型和异步操作,以提高并发性能。
4. 支持丰富的数据结构:除了基本的字符串和键值对,Redis还支持许多复杂的数据结构,如哈希表、列表、集合和有序集合等。
这些数据结构具有丰富的操作命令,可以进行高效的数据处理和查询。
5. 发布/订阅模式:Redis提供了发布/订阅(pub/sub)模式,可以用于实现简单的消息队列和实时通信。
发布者可以将消息发布到一个或多个频道,订阅者可以订阅感兴趣的频道来接收消息。
这种模式在构建实时应用和消息系统时非常有用。
6. 事务支持:Redis支持事务操作,可以将多个命令组合成一个原子操作。
事务可以保证多个命令的执行是连续的,要么全部执行成功,要么全部不执行。
这种原子性操作对于维护数据的一致性和完整性非常重要。
7. 高可用性和复制:Redis支持主从复制机制,可以将数据复制到多个从节点上以实现高可用性和容错性。
当主节点发生故障时,系统可以自动切换到一个从节点来提供服务。
Redis命令大全(超详细)

Redis命令⼤全(超详细)⼀:序 其实本⽂的命令⼤家都可以去官⽹学习,但是我出这篇⽂章只是以更直观的⽅式来解读官⽹上的命令,让⼤家⼀眼可以看得懂,看的明⽩; 注意:我全⽂使⽤的Redis版本为 6.2.x 版本,低版本可能有些命令不存在;还有要想学习更全的Redis命令, 其实写本次⽂章让我最初模棱两可的⼀些命令印在我的脑海,后期在查命令也是有印象本⽂主要介绍通俗易懂的命令,具体⽂章会有如下内容(红⾊字体,其它则会在其它⽂章指出)连接命令:连接(connection)基本key类型:键(key)基本数据类型:字符串(String)、散列(hash)、列表(list)、集合(set)、有序集合(sorted)特殊数据类型:位图(bitmaps)、超长⽇志(hyperloglog)、地理空间(geospatial)发布订阅命令事务命令...⼆:Redis基本命令及常识 在真正学习Redis之前,得先了解⼀下Redis的⼀些基本命令,这样才可以更快的知道Redis的命令⽤法和⼤概的了解①:连接服务端:./redis-cli -h 127.0.0.1 -p 6379②:Redis默认是有16个数据库的(0~15)通过select命令来切换数据库select 1 -- 连接到第 2 个数据库 0开始计算③:往数据库设置string类型值set name zhangsan④:查看数据库中key的数量dbsize⑤:查看刚才添加的key的值get name⑥:查看所有key的值keys *⑦:清空全部数据库和清空当前库flushall(清空全部库) flushdb(清空当前库)⑧:删除添加的name key键del name三:Key值命令 key值命令可以说是⼀些类型的公共命令,⽐如有设置定时时间,排序,数据迁移等等语法:keys pattern说明:⽤来匹配和查看指定的keypattern:查询条件h?llo 匹配 hello, hallo 和 hxlloh*llo 匹配 hllo 和 heeeelloh[ae]llo 匹配 hello 和 hallo, 不匹配如 hilloh[^e]llo 匹配 hallo, hbllo, ... 不匹配如 helloh[a-e]llo 匹配 hallo 和 hbllo, [a-e]说明是a~e这个范围,如hcllo也可以匹配若想匹配如转义字符的如下,就需要使⽤ \ 转义你想匹配的特殊字符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hash Map
• hset 、hget • hmset hmget • hgetall
集合
• Set:无序的集合、不可重复
– sadd 、smembers – sdiff、sinter、sunion
• Sortedset:一个可以排序的集合,根据(scores)来排序
– zadd 、zrange、zrangebyscore – zrevrange、zrevrangebyscore
Master和Slave的通信过程
sync[自动] dump出rdb
master 缓冲的aof
slave
replicationFeedSlaves
Redis集群的配置
• Master配置:
– 关闭rdb快照(备份工作交给slave) – 可以开启aof
• Slave配置:
– – – – 声明slave-of 配置密码[如果master有密码] [某1个]slave打开 rdb快照功能 配置是否只读[slave-read-only]
Redis:RDB快照持久化
• rdb的工作原理:
– 每隔N分钟或N次写操作后, 从内存dump数据形成rdb文件,压缩放在备份目录
参数值名称
说明 刷新快照到硬盘中,必须满足 两者要求才会触发,即900秒之 后至少1个关键字发生变化。 必须是300秒之后至少10个关 键字发生变化。
• 相关参数: save 900 1
• 注意:如果命令格式有误,exec会报错 • 如果命令格式不错,只是逻辑错,exec不执行正确的命令---需要程序员去 负责
Redis消息的发布和订阅
subscribe<------频道----------publish subscribe news --订阅新闻频道 publish news 内容--发布新闻内容 适宜做在线聊天,消息推送
• Remote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的 key-value存储系统。 • Redis提供了一些丰富的数据结构
– 包括 lists, sets, ordered sets 以及 hashes , – 还有和Memcached一样的 strings结构. – Redis当然还包括了对这些数据结构的丰富操作。
Redis的数据类型及命令
字符串 链表
Redis的数 据类型
集合(无序、 有序)
Hash(Map)
字符串类型
• String:最基础的类型,二进制的数据 512M • set 、get、append • mset 、mget 、incr、decr
链表List
• lpush、lrange、lpop • rpush、rrange、rpop
存储和加载rdb文件时校验
设置rdb文件名 设置工作目录,rdb文件会写入 该目录
Redis:RDB的缺点
断电 在2个保存点之间,断电, 将会丢失1-N分钟的数据 出于对持久化的更精细要求,redis增添了aof方式 append only file
Redis:AOF持久化
• AOF的工作原理:
用秒设置生命周期
用毫秒设置生命周期 使key变为永久 查询key的剩余生命周期(返回秒) 查询key的剩余生命周期(返回毫秒) 对于不存在的key或过期key,返回-1 redis2.8对于不存在的key返回-2
Redis的键值操作-2
操作 DEL key [key ...] rename key newkey renamenx key newkey move key db 说明 删除多个key,返回真正被删除的key数量 重命名key->newkey。如果newkey存在,值被覆盖 同rename,只是newkey存在时,不进行操作 移动key到另一个db,如果另一db有相同key,不做操作
Redis主从复制的缺陷
• 缺陷:
– 每次salave断开后,(无论是主动断开,还是网络故障),再连接master
• 都要master全部dump出来rdb,再aof,即同步的过程都要重新执行1遍. • 所以要记住---多台slave不要一下都启动起来,否则master可能IO剧增
Redis的Java客户端
• Redis的高级特性
– – – – 数据结构丰富 持久化 支持简单事务 主从配置方便
Redis的安装
• 安装:
– 不必configure – make – make PREFIX=/usr/local/redis install
redis-3.0.5.tar.gz
• 启服务 • ./redis-server /path/to/redis.conf
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes rdbcompression yes
必须是60秒之后至少10000个 关键字发生变化。
后台存储错误停止写。 使用LZF压缩rdb文件
rdbchecksum yes
dbfilename dump.rdb dir ./
SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。 UNSUBSCRIBE [channel [channel ...]] 指示客户端退订给定的频道。 如果没有频道被指定,也即是,一个无参数的 UNSUBSCRIBE 调用被执行, 那么客户端使用 SUBSCRIBE 命令订阅的所有频道都会被退订 PUNSUBSCRIBE [pattern [pattern ...]] 指示客户端退订所有给定模式。
##当前sentinel实例是否允许实施“failover”(故障转移) ##no表示当前sentinel为“观察者”(只参与"投票".不参与实施failover), ##全局中至少有一个为yes sentinel can-failover def_master yes ##sentinel notification-script mymaster /var/redis/notify.sh
appendfsync always appendfsync everysec no-appendfsync-on-rewrite yes auto-AOF-rewrite-percentage 100 auto-AOF-rewrite-min-size 64mb
系统缓冲,统一写,速度快
系统不缓冲,直接写,慢,丢失数据少 每秒写1次 正在导出rdb快照的过程中,要不要 停止同步aof aof文件大小比起上次重写时的大小 ,增长率100%时,重写 aof文件,至少超过64M时,重写
基于内存亦可持久化的日志型数据库
Redis
赵渝强 collen7788@
Agenda
• • • • • • • • • • Redis特点及安装 Redis键值操作 Redis数据类型 事务和锁机制 消息订阅 持久化 集群 Redis的Java客户端 运维 仿微博实战
Redis的特点和安装
Redis的连接
• Redis的协议是基础文本的协议,(http,memcached也是)客户端的开发较 为简便。 • Redis官方提供了C,java,C#,PHP,lua脚本的客户端 • 我们在学习时,用到redis-cli 官方客户端及Java-Redis客户端 • 在与redis-server同一目录下,redis-cli即是
Redis的持久化
• 持久化: 即把数据存储于断电后不会丢失的设备中,通常是硬盘. • 常见的持久化方式:
– 主从:通过从服务器保存和持久化,如mongoDB的replication sets配置 – 日志:操作生成相关日志,并通过日志来恢复数据
• Redis的持久化方式
– RDB快照持久化 – AOF
– config get/set slowlog-log-slower-than – CONFIG get/SET slowlog-max-len – slow log get 获取慢日志
Sentinel监控主从服务器
通信 sentinel
slave2 master
slave1
通信失败
slave1 变成 master
Redis基本操作的经典案例
• • 背景:网站用户的登录情况 问题:
– 1亿个用户。有经常登录的,有不经常登录的 – 如何记录用户的登录信息 – 如何来查询活用户,如一周登录3次的用户
Redis的事务和锁机制
watch key1 key2 unwtach [key1 key2 multi command command ... discard/exec
• 持久化# Persistence
– rdb_changes_since_last_save:0 – rdb_last_save_time:1375224063
Redis运行时的观察参数(续)
• fork耗时#Status
– latest_fork_usec:936 上次持久化花费微秒
• 慢日志
命令
SLOWLOG INFO CONFIG GET CONFIG SET MONITOR SYNC CLIENT LIST CLIENT KILL CLIENT SETNAME CLIENT GETNAME
说明
显示慢查询 显示服务器信息 获取配置信息 设置配置信息 打开控制台 主从同步 客户端列表 关闭某个客户端 为客户端设置名字 获取客户端名字
Sentinel监控配置
sentinel monitor def_master 127.0.0.1 6379 2 sentinel auth-pass def_master 012_345^678-90