Redis

Redis

特点

  • 性能极高

  • 原子性

  • 支持事务

  • 支持消息/订阅模式

  • 支持key过期时间特性

  • 支持多种数据结构

  • 支持持久化

  • 支持主从复制

  • 支持集群

  • 官方仅支持Linux系统

应用场景

  • 数据缓存应用(最多使用)

    热点数据: 数据库中数据被访问的频率是不均匀的,频繁被访问的数据称为热点数据((Hot Spot Data)为了提高用户的请求速度和降低服务器的负载,降低数据库的读写次数,将一些在短时间之内不会发生变化且被频繁访问热点数据,存放就到缓存中 (类似于 MyBatis 的缓存机制)

  • 消息队列

    Redis 支持消息/订阅模式,可以构建实时的消息队列,实现不同系统之间的实时交互通信,

  • 数据过期处理

    利用 Redis 支持的过期时间特性可以定时清除过期数据,如定期活动(精确到毫秒)

  • 计数器应用

    利用 Redis 的原子性,可以轻松地使用 RedisINCR (自增) 和 DECR (自减) 命来构建计数系统,关键是不用担心数据库的并发性问题一般用于网站访问统计

  • 会话缓存应用

    分布式集群架构中的 session 分离 (代替Session 会话,保存 Web 用户状态信息)

单进程单线程架构

  • Redis 使用单进程单线程架构和 I/0 多路复用模型来实现高性能的内存数据库服务

  • 单线程的 Redis 处理速度快的原因

    • 纯内存访问

      redis将所有的数据存放在内存中,内存的相应时间大约为100ns这是redis 达到每秒万级别访问的基础

    • 非阻塞I/O

      redis 使用 epoll 作为I/0多路复用技术的实现,再加上 redis 自身的时间处理模型将epoll 中的连接、读写关闭都转换为时间,不在网络I/O 上浪费过多的时间

    • 单线程模式

      单线程避免了线程切换和资源竞争,这样服务端也就没有了线程同步和竞争锁问题

Redis的数据

所有数据都是以key-value形式存储(key必须为字符串)

  • 插入数据(设置一个key-value对)

    127.0.0.1:6379> set name wwl

  • 删除数据(删除key以及对应的value)

    127 .0.0.1 :6379> del name

  • 查询数据(取出key所对应的value)

    127 .0.0.1 :6379> get name

  • 修改数据(修改已存在key对应的value)

    127.0.0.1 :6379> set name wwl2

Redis通用命令

Redis 提供通用的命令对数据库和各种数据类型进行操作

  • keys* 查询所有key

  • type 返回值的类型

  • exists 验证数据(检查键Key是否存在)

  • select 选择数据库(Redis数据库编号0~15)

Redis支持的数据类型

  • Stirng(字符串)

  • List(列表)

  • Set(无序集合)

  • Zset(有序集合)

  • Hash(哈希表)

Redis核心对象 -redisObject

在Redis中有一个[核心的对象] 叫做redisObject ,是用来表示所有的 key和 value的,用 redisObject 结构体来表示 String、Hash、List、Set、Zset五种数据类型

String(字符串)类型

String 是 Redis 最基本的数据类型,底层数据结构存储方式有三种 int、raw、embstr它可以存储字符串、整数、浮点数、二进制等数据

  • 常见命令

    ·mset - 一次设置多个key值(成功返回OK,失败返回0) ·incr - 对key的值做++操作 ·append - 给指定 key 的字符串追加 value

  • 应用

    • (存储对象)

      Java对象

      • 转换--JSON字符串-String类型--Redis服务器

      • 转换--对象序列化(反)-String类型--Redis服务器

    • 计数器

      由于 incr、incrby、decr、 decrby 等递增/递减指令本身就具有 Redis 原子操作的特性,所以可以利用其来实现原子计数的效果

      不会出现关系数据库存在的数据库并发问题(无需加锁)


__EOF__

本文作者3DG
本文链接https://www.cnblogs.com/3-DG/p/17745338.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   3DG  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示