redis使用笔记

reids安装

下载地址:https://redis.io/download

解压后,使用make命令编译一下。启动前修改redis.conf文件

修改daemonize的值为yes ,开启后台启动。

把bind XX这项去掉,否则只能特定ip可以访问。

启动

./src/redis-server   redis.conf

客户端连接

./src/redis-cli -h 192.168.100.155 -p 6379

 推荐一个客户端连接工具:Another Redis Desktop Manager

本地连接可以省略后面的参数

redis使用命令

命令字典:

https://redis.io/commands

https://www.redis.net.cn/order/

redis数据结构

String字符串、Hash(哈希)、List(列表)、Set(集合)、zset(sorted set:有序集合)

key和String类型value限制均为512MB

在java中使用

Jedis: 提供比较全面的redis原生指令的支持,上层封装比较弱,集群特性支持度非常低,高级特性几乎没有。

lettuce: 高级redis客户端,支持各种模式的redis连接和操作,高级特性几乎没有。

Redisson: 高级redis客户端,支持各种模式的redis连接和操作,同时提供一大堆的实用功能。


在使用是可以结合monitor命令可以在redis客户端打印收到的命令,结合java代码,可以在学习和测试时,打印出程序发给redis的命令。

在使用过程中,可以修改redis的序列化方式,这样可以在客户端更好的查看。

redis版分布式锁

可以使用Redission,Redission 为 Redis 官网分布式解决方案。

也可以自己实现分布式锁:

思路,设定一个key,获取锁时存值(持锁人信息和重入次数、时间戳等信息),并设定数据有效时间,SETNX 命令来作’尝试获取锁‘动作。

释放锁时要先判断拥有者是否是自己,然后删除,这个需要redis的lua脚本保证两个命令的原子性执行。

redis持久化

Redis 提供了两种持久化方式:RDB(默认) 和AOF 

rdb:在不同时间点(每几分钟)将数据快照存储到持久化介质中,定时处理,会丢失时间间隔内的数据。

aof:将操作指令记录下来,回复数据时,将所有操作执行一遍,数据完整度更高一点。aof生成的文件体积大,这个效率慢。

官方的建议是两个同时使用。

reids的集群

主从复制(master/slave):解决读数据的压力问题,但没有解决写数据压力的问题。

集群(直连型):redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。数据通过异步复制,不保证数据的强一致性

集群(proxy 型):Twemproxy 是一个 Twitter 开源的一个 redis 和 memcache 快速/轻量级代理服务器; Twemproxy 是一个快速的单线程代理程序,支持 Memcached ASCII 协议和 redis 协议。

使用redis的哨兵来对redis进行监控很有必要

常见问题:

缓存穿透::查找的key不存在,导致直接访问数据库。

解决思路:1、缓存空数据  2、通过bitmap--布隆过滤器过滤一些请求

缓存击穿:访问的数据,缓存恰好失效了,导致此时数据大量堆积到后端服务

解决思路:使用互斥锁,避免大量进程同时去数据库中加载该数据

缓存雪崩:部分缓存集中在某一个时间失效(与上述区别在于这里是多个数据),导致对后端服务带来很大的压力,

解决:对数据缓存过期时间加一个随机数,将过期时间变得离散。或者提前预热数据(提前将数据加载到缓存中)

在不考虑吞吐量时,加锁、使用队列等方式可以降低压力问题。

数据量大时,慎用keys

Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout. Don't use KEYS in your regular application code. If you're looking for a way to find keys in a subset of your keyspace, consider using sets.

key会阻塞掉redis,十分影响性能。

推荐使用:scan命令

对数据设置过期时间很有必要

哪怕该数据几乎不会变,也请设置一个过期时间,可以把这个时间放长一点。

本周我们使用 Redis 进行了一些实例操作,并进行了相关笔记记录。 首先,我们了解了 Redis 的基本概念和特点。Redis 是一种高性能的键值存储系统,它以内存为主存储方式,可以实现快速的读写操作,同时还提供了多种数据结构的支持,如字符串、哈希、列表、集合等,能够满足不同场景下的存储需求。 在实践中,我们首先进行了 Redis 的安装和配置。我们按照官方文档的指引,下载并安装了 Redis,然后对其进行了简单的配置,包括设置监听端口、配置密码等。同时,我们还学习了一些常用的命令,如 SET、GET、DEL 等,以及相关的配置文件参数的含义。 接着,我们进行了一些基本操作的练习。比如,我们通过命令向 Redis 中新增了一些键值对,并进行了查询和删除操作。我们还尝试了一些 Redis 的高级特性,如使用哈希结构存储和获取数据,并使用列表结构实现了简单的消息队列。 此外,我们还了解了 Redis 的持久化机制。Redis 提供了两种持久化方式,分别是 RDB(快照)和 AOF(追加式文件),可以将内存中的数据定期或根据日志保存到硬盘中,以防止数据丢失。 总结而言,本周我们对 Redis 进行了初步的学习和实践。我们了解了 Redis 的基本概念、安装配置以及常用操作命令,并进行了简单的实例操作。通过这些学习,我们对 Redis使用有了一定的了解,并在后续的工作中可以更好地应用它来解决实际问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值