Redis笔记

redis

简介

Redis是一个开源的内存数据库,它以键值对的形式存储数据,并且支持多种数据结构,包括字符串、列表、集合、哈希、有序集合等。Redis最显著的特点是其高性能和快速的读写访问速度,这主要得益于其将数据存储在内存中,并且使用单线程模型来处理请求。

内存 和 磁盘的区别

内存

  • 用于临时存储
  • 读写速度快,被cpu直接访问
  • 内存容量小,价格贵

磁盘

  • 用于永久储存
  • 读写速度较慢
  • 磁盘容量大,价格低

总结

内存和磁盘在读写性能和查询性能方面有着明显的差异。内存具有极高的读写速度和查询性能,适合处理实时性要求高的数据操作;而磁盘虽然读写速度较慢,但容量较大,适合长期存储和处理大量数据。

redis 与 mysql 的区别 与 适用时机

redis

  • 快速的内存访问
  • 支付丰富的数据结构
  • 受限于内存容量
  • 持久化开销大

mysql

  • 持久化存储
  • 具有强大的查询功能
  • 性能较低

什么时候使用 redis

  1. 需要高性能的读写操作:Redis将数据存放在内存中,所以读写非常快。
  2. 对数据结构有特殊需求:Redis支持多种数据结构,适合需要复杂数据结构的场景。
  3. 需要实现实时通信或消息传递:Redis支持发布/订阅模式,可以实现实时通信和消息传递,适合需要实时消息处理的场景。

使用redis就是去缓解数据库的访问压力的,访问和操作的快,那么一定时间处理的就越多,就可以缓解数据库压力。

那么什么时候数据库压力大呢?

  1. 数据量大
  2. 查询频繁、高并发的访问

什么时候使用 mysql

  1. 需要复杂的查询和数据处理
  2. 需要持久化存储大规模数据
  3. 需要强大的事务支持

总结

选择使用Redis还是MySQL取决于应用需求和场景。如果需要快速的读写访问,并且数据量相对较小,可以使用Redis;如果需要处理复杂的查询和大规模数据存储,可以使用MySQL。有时候也可以将两者结合使用,根据实际需求进行数据存储和处理。

redis 不同数据结构适用场景

字符串 String

  • 缓存
  • 计算器

列表 List

  • 消息队列
  • 最新动态
  • 日志记录

集合 Set

  • 标签系统
  • 好友关系

哈希 Hash

  • 用户信息
  • 对象

有序集合 Sorted Set

  • 排行榜
  • 地理位置服务

基本使用方法

键值对
set name lpy   --存放字符串键值对
mset name lpy age 18 --批量存放键值对
setnx name lpy  --如果不存在key为name,那么就设置value(分布式锁的原理)
get name   -- 获取key
mget name age  --批量获取key
del key -- 删除key
expire key 60 --设置过期时间,单位为秒
incr key -- 将key中存储的数字加1
decr key -- 将key中存储的数字减1
incrby key 2  --将key中存储的值都加上2
decrby key 2 --将key中存储的值都减去2
Hash

相当于键值对中的value变成了hash而已,个人理解。
所以其实和java对象很像,可以存储java对象。
比如:

hset sdt1 name lpy -- 设置值
hget sdt1 name -- 获取值
hmset sdt2 name hy age 18 -- 批量设置
hmget sdt2 name age -- 批量获取
hgetall sdt2 -- 获取全部键值
hkeys sdt2 -- 获取hash所有key
hvals sdt2 -- 获取hash所有value

演示一下就明白了。
在这里插入图片描述

List

和其他语言中的deque用法一致,不过这里是用左和右表示而不是front和back。

rpush myList val1 -- 右侧推入值
lpush myList val2 -- 左侧推入值
rpop myList -- 右弹出值
lpop myList -- 左弹出值 

在这里插入图片描述

未完,待更新 。。。

相关推荐

  1. Redis 笔记

    2024-03-11 03:30:04       62 阅读
  2. redis笔记

    2024-03-11 03:30:04       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 03:30:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 03:30:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 03:30:04       82 阅读
  4. Python语言-面向对象

    2024-03-11 03:30:04       91 阅读

热门阅读

  1. MySQL和Redis Common Command

    2024-03-11 03:30:04       46 阅读
  2. 什么是生活?(2024-2-26)

    2024-03-11 03:30:04       50 阅读
  3. vim基本使用

    2024-03-11 03:30:04       42 阅读
  4. 京东面试官问我,你在catch块中写业务代码吗?

    2024-03-11 03:30:04       54 阅读
  5. Docker容器管理的内容与作用

    2024-03-11 03:30:04       45 阅读
  6. 鸿蒙os开发做全局路由拦截

    2024-03-11 03:30:04       69 阅读
  7. WPF自定义快捷命令

    2024-03-11 03:30:04       48 阅读
  8. web蓝桥杯真题:冰墩墩心情刻度尺

    2024-03-11 03:30:04       52 阅读
  9. 【c++】模板的使用

    2024-03-11 03:30:04       47 阅读