Redis(二)之数据类型、常用命令以及持久化

Redis04精简总结|三主三从&哨兵模式(工作机制)|集群模式|缓存的穿透&雪崩&击穿 redis是一个内存级的高速缓存数据库。(对比磁盘IO)使用场景:1、并发访问量大的 2、数据量小 3、修改不频繁项目中:1、验证码 2、登录成功用户信息 3、首页(模块数据 轮播图,商品分类,热点模块,推荐模块) 4、购物车(商品信息) 阅读详情

数据类型(重点)

这里写图片描述
Key的取值:自定义,key名不要过长,否则影响使用效率;Key不要太短,最好是有意义。


Redis命令

String命令(重点)

字符串类型是Redis中最为基础、常用的数据存储类型,字符串在Redis中是二进制安全的,这便意味着该类型存入和获取的数据相同。在Redis中字符串类型的Value最多可以容纳的数据长度是512MB。

二进制安全和数据安全是没有关系的。
MySQL-关系型数据库,二进制不安全。【乱码丢失数据】
这里写图片描述
这里写图片描述

常用命令

命令功能
set key value设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”
如果赋予相同的key,新的value会覆盖老的value
get key获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,
因为get命令只能用于获取String value;如果该key不存在,返回(nil)。
del key删除指定key
返回值是数字类型,表示删了几条数据
getset key value先获取该key的值,然后再设置该key的值。
incr key将指定的key的value原子性的递增1。如果该key不存在,其初始值为0,在incr之后其值为1。
如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。相当于 ++i
decr key将指定的key的value原子性的递减1。如果该key不存在,其初始值为0,在incr之后其值为-1。
如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。相当于 - -i
append key value拼凑字符串。如果该key存在,则在原有的value后追加该值;
如果该key不存在,则重新创建一个key/value

String使用场景:主要用于保存json格式的字符串


Hash命令(重点)

Redis中的Hash类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

Hash<------>{username:"张三",age:"18",sex:"man"}<------>javaBean

Hash特点:占用的磁盘空间极少

命令功能
hset key field value为指定的key设定field/value对(键值对)。
hget key field获取哈希表 key 中给定域 field 的值。
hmset key field value [field2 value2 …]设置key中的多个filed/value
hmget key filed1 filed2 …获取key中的多个filed的值
hgetall key获取key中的所有filed-vaule
del key删除整个hash
hkeys key获得所有的字段
hvals key获得所有的value
keys *查询所有的key

list命令(重点)

特点:有序、可重复(双向链表)

命令功能
lpush key values[value1 value2…]在指定的key所关联的list的头部插入所有的values,
如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,
之后再向该链表的头部插入数据。插入成功,返回元素的个数。
rpush key values[value1、value2…]在该list的尾部添加元素。
lrange key start end获取链表中从start到end的元素的值,start、end从0开始计数;
也可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推…
lrange key 0 -1:查询该list的所有元素
lpop key返回并弹出指定的key关联的链表中的第一个元素,即头部元素。
如果该key不存在,返回nil;若key存在,则返回链表的头部元素。
rpop key从尾部弹出元素。
llen key返回指定的key关联的链表中的元素的数量。
rpoplpush resource destination将链表中的尾部元素弹出并添加到头部。[循环操作]

使用场景:

  • 微博 TimeLine
  • 消息队列

set命令(重点)

特点:无序、不重复

命令功能
sadd key values[value1、value2…]向set中添加数据,如果该key的值已有则不会重复添加
smembers key获取set中所有的成员
sismember key member判断参数中指定的成员是否在该set中,
1表示存在,0表示不存在或者该key本身就不存在。
srem key members[member1、member2…]删除set中指定的成员
sdiff key1 key2…返回key1与key2中相差的成员,而且与key的顺序有关。即返回差集。
(属于A并且不属于B的元素构成的集合)
sinter key1 key2 key3…返回交集。(属于A且属于B的元素构成的集合)
sunion key1 key2 key3…返回并集。(属于A或者属于B的元素构成的集合)
scard key获取set中成员的数量
srandmember key随机返回set中的一个成员

使用场景:大数据集合的并集,交集,差集运算。

  • 共同好友、二度好友
  • 利用唯一性,可以统计访问网站的所有独立 IP
  • 好友推荐的时候,根据 tag 求交集,大于某个 threshold 就可以推荐

zset命令(了解)

特点:有序、不重复

  1. 有序集合用于存储键值对;
  2. 有序集合的键被称为成员member,每一个成员都是独一无二的;
  3. 有序集合的值被称为分值score,分值必须是浮点数。
命令功能
zadd key score member score2 member2 …将所有成员以及该成员的分数存放到sorted-set中。
如果该元素已经存在则会用新的分数替换原有的分数。
返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。
zscore key member返回指定成员的分数
zrange key start end [withscores]获取集合中脚标为start-end的成员,[withscores]返回的成员包含其分数。
(分数由小到大排列)
zrevrange key start end [withscores]获取集合中脚标为start-end的成员,[withscores]返回的成员包含其分数。
(分数由大到小排列)
zrem key member[member…]移除集合中指定的成员,可以指定多个成员。

使用场景:排行榜


Redis通用命令(重点)

keys pattern:获取所有与pattern匹配的key,返回所有与该key匹配的keys。
通配符:

  • *表示任意0个或多个任意字符
  • ?表示任意一个字符
命令功能
keys *查询所有的key
keys ????查询4个字符的key
del key1 key2…删除指定的key
exists key判断该key是否存在,1代表存在,0代表不存在
type key获取指定key的值类型。该命令将以字符串的格式返回。
返回的字符串为string、list、set、hash和zset,如果key不存在返回none。

设置key有效/过期

命令功能
expire key设置key的生存时间,单位:秒。如果某个key过期,redis会将其删除
ttl key获取该key所剩的超时时间,如果没有设置超时,返回-1。如果返回-2表示超时不存在。

例如:用户激活。
激活邮件,激活短信。30分钟内


扩展知识(了解)

消息订阅与发布

订阅新闻,新闻发布

命令功能
subscribe channel订阅频道,例:subscribe mychat,订阅mychat这个频道
psubscribe channel*批量订阅频道,例:psubscribe s*,订阅以”s”开头的频道
publish channel content在指定的频道中发布消息,如 publish mychat “today is a newday”

例如:登录QQ时,电脑右下角有时会发来小窗口,这是Redis发送过来一段html代码,然后解析而成的窗口

多数据库

MySQL数据库可以自己用语句自定义创建
create database xxxx;

Redis也是有数据库的。 Redis已经提前创建好了。
Redis默认有16个数据库。0,1,2…….15

在Redis上所做的所有数据操作,都是默认在0号数据库上操作
数据库和数据库之间,不能共享键值对。

命令功能
select 数据库名;切换数据库
move key 1将当前库的key移植到1号库中
flushdb清空当前数据库
flushall清空Redis服务器数据

Redis事务

MySQL事务:目的为了保证数据完整性,安全。

Redis事务:目的为了进行redis语句的批量化执行。

命令功能
multi开启事务用于标记事务的开始,其后执行的命令都将被存入命令队列,
直到执行EXEC时,这些命令才会被原子的执行,类似与关系型数据库中的:begin transaction
exec提交事务(执行批量化),类似与关系型数据库中的:commit
discard事务回滚(不执行批量化操作),类似与关系型数据库中的:rollback

服务器命令

  • ping:测试连接是否存活,返回PONG则代表存活
  • quit:退出客户端
  • dbsize:返回当前数据库中key 的数目
  • info:查看redis数据

Redis持久化

内存(兔子):高效、断电数据就会消失
硬盘(乌龟):读写速度慢于内存的,断电数据依旧存在

持久化:把数据保存在硬盘上

关系型数据库MySQL持久化:

  • 任何增删改语句,都是在硬盘上做的操作。
  • 断电以后,硬盘上的数据还是存在。

非关系型数据库Redis:

  • 默认情况下,所有的增删改,数据都是在内存中进行操作。
  • 断电以后,内存中的数据不存在的。

断电以后,redis的部分数据会丢失,丢失的数据是保存在内存中的数据。

Redis存在持久化操作。

Redis有两种持久化策略:

RDB:是redis的默认持久化机制。

RDB相当于照快照。保存的是一种状态。

20G数据 —> 几kb快照

    优点:1、快照保存数据速度极快,还原数据速度极快
         2、适用于灾难备份

    缺点:1、小内存机器不适合使用。
         RDB机制符合要求就会照快照。(随时随地启动),会占用一部分系统资源(突然的),很可能因为内存不足直接宕机。(宕机后,服务器会关闭,非正常关闭,导致丢失数据)
              服务器正常关闭时 照快照
              Key满足一定条件,照快照

    适用于:内存比较充裕的计算机。

RDB何时进行照快照:

  1. 服务器正常关闭时,会照一次快照 ./bin/redis-cli shutdown
  2. key满足一定条件,会照一次快照

redis.config

save 900 1 #每900秒(15分钟)至少有1个key发生变化,则dump内存快照。
save 300 10 #每300秒(5分钟)至少有10个key发生变化,则dump内存快照
save 60 10000 #每60秒(1分钟)至少有10000个key发生变化,则dump内存快照
    key发生变化(key数据添加、修改、删除)
    例如1:12:00 – 12:15  ,有1个key发生变化,在12:15就照一次快照保存
        12:00 – 12:15  ,没有任何key发生变化,在12:15不会照快照

    例如2:12:00 – 12:05  ,有11个key发生变化,12:05就照一次快照保存
        12:00 – 12:05  ,有9个key发生变化,12:05不会照快照,12:15 会照快照

    例如3:  12:00 – 12:01  ,有15000个key发生变化,12:01就照一次快照保存
        12:00 – 12:01  ,有1000个key发生变化,12:01不会照快照,12:05会照快照
AOF: 使用日志功能保存数据操作。

AOF保存对key的增删改操作语句。

默认时AOF机制关闭的。

    优点:1、持续性占用极少量的内存资源
    缺点:1、日志文件会特别大,不适用于灾难恢复
         2、恢复效率远远低于RDB

    适用于:内存比较小的计算机

AOF操作:
只会保存导致key变化的语句

AOF配置:

  • always #每次有数据修改发生时都会写入AOF文件。比较安全,但是极为浪费效率
  • everysec #每秒钟同步一次,该策略为AOF的缺省策略。安全性低,比较节省系统资源
  • no #从不同步。高效但是数据不会被持久化。不安全

开启AOF机制:
redis.conf

appendonly yes

策略的选择:
redis.conf

# appendfsync always
appendfsync everysec
# appendfsync no
Redis 简介+部署+常用命令!!! Redis(远程字典服务器) 是一个开源的、使用 C 语言编写的NoSQL 数据库。Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降; 阅读详情

相关推荐

LoRA学习: SX1276/SX1277/SX1278对比

Lora芯片 SX1276/SX1277/SX1278的比较SX1276/7/8是一种半双工传输的低中频收发器,配备标了标准FSK和远距离扩频Lora调制解调器。该芯片可以用于超长距离的Lora扩频通信,并且抗干扰性强,同时达到低功耗要求。1、芯片关键参数对比: 可以看出SX1276的带宽范围为 7.8~500kHz ,扩频 因子6~12,并覆盖所有可用频段。 SX1277的带宽和频段方位与 S

HowieXue 薛永浩的博客 1万+

Redis04

redis是一个内存级的高速缓存数据库。(对比磁盘IO)使用场景:1、并发访问量大的 2、数据量小 3、修改不频繁项目中:1、验证码 2、登录成功用户信息 3、首页(模块数据 轮播图,商品分类,热点模块,推荐模块) 4、购物车(商品信息)

Rancemy的博客 1134

华三 无线AP密码修改步骤

华三无线AP配置,包含Web和命令行两种。这是FAT AP的配置,仅供参考!

Redis常用知识笔记

TCP端口6379,默认16个库,从0开始所有库密码相同Redis是单线程+多路IO复用技术启动命令。

weixin_48713918的博客 1693

drcom客户上网登陆端

当今大学 上网的主要登陆端 是针对win7系统的最新版

一些 工作中 常见 英语 单词

一些 工作中 常见 英语 单词 一些 工作中 常见 英语 单词 一些 工作中 常见 英语 单词

redis常用命令

Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库。redis的数据格式都是(key,value),key为String类型,value支持5种数据类型。注:redis数据的持久性是可选的。如果设置不持久,则redis关机数据消失。

sunguizhu的博客 6509

wap乐购商城程序

乐购商城WAP建站程序 简单WAP商城,只要你会打字就可以建WAP商城,简单容易,易上手。 后台地址:/admin/login.asp 用户名与密码:admin

redis初级redis入门redis数据类型redis常用命令redis持久化机制

Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。**官网:**https://redis.io**中文网:**https://www.redis.net.cn/key-value结构存储:基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。

shangxianjiao的博客 397

_〖第6章:面向对象(高级)〗java_实例分析:宠物商店笔记

_〖第6章:面向对象(高级)〗_实例分析:宠物商店笔记,提炼编程能力

tomcat下部署php所需的配置php环境变量包

tomcat部署php,需要配置php环境变量。将php解压到tomcat的根目录下,将文件夹名字改为php,把php.exe所在的路径加入到path中即可。

【Redis】Redis的特性和应用场景 · 数据类型 · 持久化 · 数据淘汰 · 事务 · 多机部署

本文主要讲解的是redis的常见的面试题总结,包括特性和应用场数据类型、跳跃表、持久化、数据淘汰机制、事务、分机部署!

Carefree_State的博客 3206

用Socket实现基于TCP和UDP的原理探索.pdf

用Socket实现基于TCP和UDP的原理探索.pdf用Socket实现基于TCP和UDP的原理探索.pdf

Redis简介、常用命令及优化

关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2 等。① 易于维护:都是使用表结构,格式一致② 使用方便:SQL语言通用,可用于复杂查询③ 支持复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

yangye2424637628的博客 1万+

维宏系统参数资料

系统的参数设置 ,方便大家学习研究。共同学习进步

filemanager

filemanager 密码admin 账号admin

redis 支持的五种数据类型及数据的持久化

Redis 持久化机制通过将内存数据保存到磁盘,确保服务器重启后数据不丢失,核心包含 ‌。

m0_65296856的博客 1546

手把手教你配置UFS的PSA状态机:WRITE/UNMAP命令实战与LBA映射避雷

本文详细解析了UFS PSA状态机的配置流程,重点探讨了在Pre-soldering状态下WRITE命令的原子性操作原则与单次写入LBA的重要性。通过实战代码示例,指导开发者如何正确初始化PSA环境、切换状态机,并深入剖析了使用UNMAP命令清理LBA映射时的常见陷阱与避雷指南,确保量产数据安全与良率。

weixin_29213525的博客 419

Redis的数据类型,线程,持久化机制

Redis单线程的设计让它可以避免复杂的多线程同步问题,同时大多数操作在内存中,能够高效执行。Redis的持久化机制包括AOF日志、RDB快照以及混合持久化方式。Redis支持多种数据类型,包括基本的字符串、哈希、列表、集合、有序集合等,还支持BitMap、HyperLogLog、GEO和Stream等扩展数据类型。

weixin_46053950的博客 830

IEEE Transactions on Industrial Informatics(TII)投稿全流程解析:从准备到成功提交

本文详细解析了向IEEE Transactions on Industrial Informatics(TII)投稿的全流程,涵盖从投稿前的格式准备、内容结构优化到在线提交系统实操等关键环节。重点强调了遵守TII严格的格式规范、双盲评审要求以及如何构建有说服力的学术叙述,旨在帮助研究者提升稿件质量,顺利通过评审。

weixin_28396629的博客 1862

手把手教你用MaxEnt+ArcGIS玩转物种分布预测

本文详细介绍了如何利用MaxEnt最大熵模型与ArcGIS软件进行物种分布预测。通过实战案例,从数据收集、环境变量处理、模型参数设置到结果可视化分析,手把手教你掌握生态位模型的核心流程。结合SDM toolbox插件,可高效完成数据预处理与高级空间分析,是生态学与保护生物学研究的实用指南。

weixin_29309475的博客 559
上一篇: Redis(一)之概述及安装
下一篇: 阿里云CentOS7.3安装MySQL以及配置远程连接
章 鱼
博客等级 码龄10年 203粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值