Redis使用笔记

本文介绍了Redis的数据结构,如String、Hash、List、Set和Sorted Set,并探讨了它们在不同场景的应用。此外,还详细讲解了Redis的事务机制,包括multi、exec和discard命令的使用。最后,讨论了Redis的持久化方式RDB和AOF,以及如何恢复数据。
摘要由CSDN通过智能技术生成

redis安装参考:https://blog.csdn.net/weixin_41381863/article/details/88231397

数据结构及常用生产场景

1、String(字符串)--一个键最大能存储512MB

字符串是最常用的数据类型,能够存储任何类型的字符串(即任意key-value),当然也包括二进制、json化的对象、甚至是Base64编码之后的图片。在Redis中一个字符串最大的容量为512MB,可以说是无所不能了。

2、Hash(哈希)--每个 hash 可以存储 2^32 - 1 键值对(40多亿)

hash 是一个键值对集合。常用作存储结构化数据,比如论坛系统中可以用来存储用户的ID、昵称、头像、积分等信息。如果需要修改其中的信息,只需要通过key取出value进行反序列化修改某一项的值,再序列化存储到Redis中。

对于Hash结构存储,由于Hash结构会在单个Hash元素在不足一定数量时进行压缩存储,所以可以大量节约内存。这一点在String结构里是不存在的。

3、List(列表)--列表最多可存储 2^32 - 1)元素 (4294967295, 每个列表可存储40多亿)

列表是简单的字符串列表,按照插入顺序排序(即顺序是固定的)。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。另外,可以利用lrange命令,做基于Redis的分页功能,性能极佳,用户体验好。

4、Set(集合)--集合中最大的成员数为 2^32 - 1

Set是string类型的无序集合,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

Set的特殊之处在于:自动排重。当你需要存储一个列表数据时,又不希望出现重复的数据,那么Redis的Set是最好的选择。

 5、Sorted Set(有序集合)

与Set一样都是自动排重的,区别在于:每个元素都会关联一个double类型的分数(分数可以重复)。redis正是通过分数来为集合中的成员进行从小到大的排序。通常用作排行榜。

Redis的事务

redis的事务主要由三个命令组成:multi、exec和discard。

mutli--类似于begin transaction的意思,即开始事务。那么在此命令之后的所有操作都会被绑定在一起。

exec--类似于commit的意思,即提交。

discard--类似于rollback的意思,即回滚。

在Spring redis中的操作示例:

//StringRedisTemplate
	@Test
	public void method() {
		//开启事务支持  默认为false
		redisTemplate.setEnableTransactionSupport(true);
		redisTemplate.multi();//开始事务
		redisTemplate.opsForValue().set("name1", "zhangsan");
		redisTemplate.opsForValue().set("name2", "lisi");
//		redisTemplate.discard();//回滚
		redisTemplate.exec();//提交
		System.out.println("done");
	}

Redis持久化与恢复

RDB和AOF

1、RDB

RDB方式是Redis默认就开启的持久化方式。在配置文件中有如下一段信息:

save 900 1   ###每900S至少有一条发生数据变化即持久化
save 300 10  ###每300s至少有10条数据发生变化即持久化
save 60 10000  ###每60s至少有10000条数据发生变化即持久化

从这里可以看出,假设 在上次持久化之后的10s内变动了1000条数据后宕机,这1000条数据就会丢失。

RDB持久化的时候,会阻塞主线程的工作,对性能有一定影响。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTM4MTg2Mw==,size_16,color_FFFFFF,t_70

2、AOF方式(修改配置后,需要重启Redis)

AOF是需要手动开启的。AOF开启后,持久化文件以.aof后缀命名,和配置文件.conf在同一路径下。在配置文件中有如下一段信息:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTM4MTg2Mw==,size_16,color_FFFFFF,t_70

如上所示:最安全的方式就是每修改一次就持久化一次。

3、恢复数据

a、RDB方式是默认的,所以重启之后会恢复相关数据。

b、AOF---如果数据是手动误删,比如执行flushall,需要进入.aof文件,删除其中的flushall命令,重启redis即可恢复数据。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值