[Redis系列]基础知识扫盲

猿Why花了两周左右的时间,在阿里云开发者社区学习了一门Redis入门到精通课程:基础篇进阶篇对Redis的知识点进行恶补、扫盲。这篇文章,我打算作为一个小结,以回忆的方式整理一下知识点

Redis基础数据类型以及操作命令

string

数字、字符串,都是以string形式存储

命令

#> set key value
#> get key

hash

类似Java中的Map,key为字符串类型,field为字符串,value为string(没有对象这一说)

命令

#> hset key field value
#> hgetall key
#> hget key field

list

类似于Java中的List,存储结构是双向列表的形式。并且,list操作有方向性,以下命令,只记录left操作

命令

#> lpush key value
#> lrange key start end //lrange key 0 -1 查看全部数据
#> lpop key 移出并获取列表的第一个元素

set

无序不重复集合,存储结构与hash类型存储结构完全一样,只不过filed存储值,value存(nil),不起作用。并且,set类型也支持交、并、差操作(有命令)

命令

#> sadd key value
#> smembers key
#> srem key member //删除指定元素

zset

有序不重复集合,存储结构与set完全相同,value中存储用于排序的值(权重)

命令

#> zadd key score(权重) member(值)
#> zrange key start end withscores // 获取全部数据
#> zadd key member // 删除

通用命令

#> del key // 删除指定key
#> exists key // 获取key是否存在
#> type key // 获取key类型
#> expire key seconds // 为指定key设置有效期
#> pexpire key milliseconds // 为指定key设置有效时间
#> expireat key timestamp
#> pexpireat key millseconds-timestamp
#> ttl key // 获取key的有效时间(返回结果说明:-2 key不存在,-1 key存在但是没有设置时间,一个大于0的数字 剩于有效时间)
#> pttl key
#> persist key // 切换key从时效性转换为永久性
#> keys pattern // 查询key *匹配任意数量的任意符号 ?匹配一个任意符号 [] 匹配一个指定符号
#> rename key newkey // 为key改名(同名key值会被覆盖)
#> renamenx key newkey // 当修改不表key不存在的时候,执行重命名操作
#> sort // 为所有key排序
#> help @generic // 其他key通用操作

#> select index // 切换数据库(index 0-15,数据库size,可以在配置文件中配置)
#> quit	// 退出客户端
#> ping	// 测试服务器是否连同
#> echo message // 控制台输出日志
#> move key db // 当前库中key 剪切到 其他指定的db中(src存在且target不存在的情况下才可成功,否则失败)
#> dbsize	// 查看当前数据库中key的数据量
#> flushdb	// 清除当前所在数据库数据
#> flushall	// 清除所有数据库的数据

持久化

数据持久化,可以做数据备份和灾备,分为RDB和AOF两种。RDB为数据快照存储,存储某一时间节点的所有数据。AOF存储命令,类似于日志记录记录执行过的命令,数据恢复的时候,就是重新执行命令。

Redis四种服务模式

单机版

redis-server直接启动,即可提供Redis服务,键值对存储与查询服务

#> redis-server redis.conf

提供服务

存储、查询

主从复制

master-slave结构,在slave节点服务启动时候,需要配置master的信息

提供服务

一般,主节点提供写服务,从节点提供读服务。master节点的写命令,同样会在从节点同步执行(缓冲区暂存命令)

哨兵模式

哨兵节点同样是Redis服务,启动命令不同

#> redis-sentinal sentinel.conf

提供服务

哨兵节点负责监控redis服务节点的健康状态,以及故障转移。Redis服务一样提供数据存储和数据查询服务,哨兵不提供存储 与查询

集群模式

集群模式,基于主从模式,依赖Ruby和gem,管理集群中的Redis节点。

#> ./redis-trib.rb create --repicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

提供服务

以集群方式做数据存储,提出“槽”的概念,key值计算后存储到指定的redis node,每个node中有一张key-槽位置的列表,保证一个key最多两次就可以找到具体的redis node。

Redis常被提及的问题

缓存预热

Redis中没有准备数据,导致数据库访问初始访问量暴增,导致数据库处理不过来

缓存雪崩

Redis中大量key集中过期,导致数据库访问量暴增

缓存击穿

Redis中热点key过期,触发key值数据在数据库中集中访问和回写Redis,造成崩溃

缓存穿透

超级频繁访问不存在的业务数据(恶意),导致数据库、应用、Redis访问量剧增

本质上将

都是Redis没能起到预期的作用,造成数据库服务压力过大,导致系统崩溃。

现在达到程度

  • 通过redis-cli进行redis服务命令操作
  • 了解四种模式Redis服务模式提供的服务
  • 在业务场景中使用Redis更加合理

下一步

Redission配置为切入口,了解Redis在业务系统中的使用方式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值