Redis基础入门-CRUD/持久化/过期删除/缓存异常/SpringBoot整合Redis


Redis是一个使用 C 语言编写的,开源的非关系型的 key / value数据库。
Redis数据存在 内存中的,所以读写速度非常快,因此 redis 被广泛应用于 缓存方向,每秒可以处理超过 10万次读写操作,

Redis支持5种数据类型:
String 字符串、List 列表、Set 集合、ZSet 有序集合、Hash 哈希字典 (Hash是在value中又存了一个key value)

ZSet与Set的区别:
Set存进去可能是乱序的
ZSet的时候附带了序号,所以是有序的

Redis有哪些优缺点

优点
读写性能优异, Redis能读的速度是10万次次/s,写的速度是81000次/s。
支持数据持久化,支持AOF和RDB两种持久化方式。
支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。
数据结构丰富,除了支持string类型的value外还支持hash、set、zset、list等数据结构。
支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。

缺点
数据库容量受到物理内存的限制不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。

Redis应用场景

热点数据加速查询(主要场景),如热点商品、热点信息等访问量较高的数据
时效性信息控制,如验证码控制、投票控制等
分布式锁实现,分布式数据共享,如分布式集群架构中的session分离消息队列

  • 会话缓存
  • 全页缓存(FPC)
  • 排行榜/计数器
  • 发布/订阅

Redis基础知识

  • Redis采用单线程机制进行工作

  • Redis默认拥有16个数据库,数据库编号从0开始,默认使用0号数据库

  • 使用select 数据库编号 可以切换使用的数据库

  • dbsize 命令查看当前数据库key的数量

  • keys * 命令查看当前数据库所有的key

  • flushdb 命令清空当前数据库

  • flushall 命令清空所有数据库

  • Redis中所有数据库使用同一个密码,默认没有密码,Redis认为安全层面应该由Linux来保证

  • Redis中所有索引都是从0开始

  • Redis默认端口是6379

  • Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf

Redis基本命令

  1. 启动服务器
    进入redis目录,启动redis-server文件
  2. 启动客户端
    进入redis目录,启动redis-cli文件
  3. 对数据进行操作
    set key value
    get key
  4. 关闭Redis服务
    shutdown
  5. 退出客户端
    control + C

其他命令

#使用redis命令行工具
redis-c1i -p 6379 
#测试客户端与服务器连接是否正常 
ping         
#重启Redis
SHUTDOWN 
echo "hello"      #打印 "hello"
#获取key的数据类型
type key
# 获取全部的配置 
config get *  
字符串 String
#存放键值对
set k1  hello
get k1
#根据key删除
del key
#查询键值是否存在(存在则返回1不凡则0
exists
keys * 查询所有
#向key的末尾追加value
append key value
# 获取字符串长度
strlen key

在这里插入图片描述

列表 List
# :将一个或多个值插入到列表头部。(左)
LPUSH list "one"
# :将一个或多个值插入到列表尾部。(右)
RPUSH list "right"
# :返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。
Lrange list 0 1

# lpop 命令用于移除并返回列表的第一个元素。当列表 key 不存在时,返回 nil 。
Lpop list
# rpop 移除列表的最后一个元素,返回值为移除的元素。
Rpop list
# rpoplpush 移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
rpush mylist "hello"
# Lindex,按照索引下标获得元素(-1代表最后一个,0代表是第一个)Lindex list 1
# llen 用于返回列表的长度。
Llen list 
集合Set
# sadd 将一个或多个成员元素加入到集合中,不能重复
sadd myset "hello"
# smembers 返回集合中的所有的成员。
SMEMBERS myset
# sismember 命令判断成员元素是否是集合的成员。 返回值:1是 0否
SISMEMBER myset "hello"

# scard,获取集合里面的元素个数
scard myset
# srem key value 用于移除集合中的一个或多个成员元素
srem myset "kuangshen"
# srandmember key 命令用于返回集合中的一个随机元素。
SMEMBERS myset
# spop key 用于移除集合中的指定 key 的一个或多个随机元素
spop myset
# smove SOURCE DESTINATION MEMBER
# 将指定成员 member 元素从 source 集合移动到 destination 集合。
smove myset myset2 "kuangshen"
哈希Hash

kv模式不变,但V是一个键值对

# hset、hget 命令用于为哈希表中的字段赋值 。
hset myhash field1 "kuangshen"
hget myhash field1
# hmset、hmget 同时将多个field-value对设置到哈希表中。会覆盖哈希表中已存在的字段。
HMSET myhash field1 "Hello" field2 "World"; #设置key1:field1 与 key2:field2 
HGET myhash field1;
# hgetall 用于返回哈希表中,所有的字段和值。
hgetall myhash
# hdel  用于删除哈希表 key 中的一个或多个指定字段
HDEL myhash field1

# hlen 获取哈希表中字段的数量。
hlen myhash
# hexists 查看哈希表的指定字段是否存在。
hexists myhash field1
# hkeys 获取哈希表中的所有域(field)。
HKEYS myhash
# hvals 返回哈希表所有域(field)的值。
HVALS myhash
有序集合Zset
# zadd  将一个或多个成员元素及其分数值加入到有序集当中。
zadd myset 2 "two" 3 "three"
# zrange 返回有序集中,指定区间内的成员
ZRANGE myset 0 -1

# zrem 移除有序集中的一个或多个成员
zrem salary key
# zcard  命令用于计算集合中元素的数量
zcard salary
# zcount 计算有序集合中指定分数区间的成员数量。
ZCOUNT myset 1 3

Redis的持久化

Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能

RDB(Redis DataBase)

RDB是Redis 默认 的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。

1.redis调用fork函数复制当前进行的一个副本-子进程
2.父进程继续接收并处理客户端发来的命令
3.子进行将内存中的数据写入一个临时的dump文件
4.子进程写入完成后,会用新的临时dump文件替换就的rdb文件
5.一次持久化完成

RDB模式的优点
1.rdb持久化文件很紧凑,占用空间更小。
2.rdb保存的是基于时间点的数据快照,更适合数据的备份和容灾
3.利用rdb文件进行数据恢复时,速度更快

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值