阅读目录

redis是什么

redis就是一个存储key-value键值对的仓库,如何使用redis在于如何理解你需要设计的系统的E-R的模型,然后合理的规划redis的数据库结构

场景

我举一个简单的消息系统的例子,业务需求:服务器端发送消息给用户

E-R模型:

1. 用户(uid,nickname,phone,mood)

2. 消息(mid,title,content,ts)

用户和消息之间是n:n的关系,一个消息可以发给多个用户,每个用户可以拥有多个消息

redis数据库设计

redis数据库设计的关键在于key的设计,我一般采用固定前缀+唯一后缀的方式,例如:

1. 消息实体是两层结构,考虑用redis的hash数据结构进行存储(ps:用基本的string也是没问题的),key为msg_[$mid],mid类似于mysql表的主key,在当前redis数据库要保证全局唯一,可使用redis的incr原子操作实现,value可以是array('title' => '标题', 'content' => '内容', 'ts' => '发布时间戳').这样,每次服务器端产生消息,构造这样一个key-value的键值对即可表示消息本身的内容

2. 用户实体,因为用户的信息需要更稳定的持久化存储,所以建议直接存储在mysql里,不需要进行迁移到redis中

3. 用户-消息关系,可以考虑redis的sets数据结构。key为unread_mids_[$uid]和read_mids_[$uid],value为mid的集合。每次消息发送给指定的用户时,只需要将消息放到对应的集合里即可

这样就能表示出消息系统对应的E-R模型了

总结

redis数据库如何使用,关键自于你如何设计和理解你要做系统的E-R模型,搞清楚实体之间的关系,在redis里设计相应的key-value键值对即可。至于那几种数据结构,对你设计redis数据库来说作用不大,只是起到更方便的效果,用memcache一样可以做到这些。

针对redis的提供的几种数据结构,我建议别浮在表面只是会调个api,一点技术含量都没有,建议去看一下源码实现,推荐链接:http://redisbook.com/

redis 关系数据库怎么转换 和_redis数据库设计(转)相关推荐

  1. redis 关系数据库怎么转换 和_redis高并发处理介绍

    Redis的高并发和快速原因 1.Redis是基于内存的,内存的读写速度非常快: 2.Redis是单线程的,省去了很多上下文切换线程的时间: 3.Redis使用多路复用技术,可以处理并发的连接.非阻塞 ...

  2. redis 关系数据库怎么转换 和_[转]mysql和redis的区别

    转自https://www.cnblogs.com/zxh1297/p/9394108.html 1.mysql和redis的数据库类型 mysql是关系型数据库,主要用于存放持久化数据,将数据存储在 ...

  3. 数据库技术:关系型数据库设计总结

    关系型数据库简介 关系数据库由由埃德加·科德(IBM)在1969年左右提出.自推出后就成为商业应用的主要数据库模型(与其他数据库模型,如分级.网络或对象模型相比).如今已有许多商业关系数据库管理系统( ...

  4. redis配置密码_Redis数据库概述

    Redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可 ...

  5. mysql 点赞数据库设计_基于redis实现的点赞功能设计思路详解

    点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysq ...

  6. 看到这个数据库设计,我终于明白了我和其他软测人的差距

    01 测试人员为什么要懂数据库设计? 更精准的掌握业务,针对接口测试.Web 测试,都是依照项目/产品需求进行用例设计,如果掌握数据库设计知识,能直接面对开发的数据表,更好.更精准的理解业务逻辑:有的 ...

  7. 初学数据库---数据库设计学习

    数据库设计学习笔记 一.理解并口述(技术点和面试点) 1.数据库简介 口述1:什么是数据?(理解并掌握) 数据(Data)是描述事物的标记符号.例如: 人的身高数据是170cm, 体重数据是60kg, ...

  8. 案例分析 2 :系统建模或数据库设计

    案例分析 2 :系统建模或数据库设计 21 20 19 18 17 16 15 15 second 14 12 21 [Q1] 在系统初步运行后,发现系统数据访问性能较差.经过分析,刘工认为原来数据库 ...

  9. 关系型数据库设计要领(值得收藏)

    欢迎关注方志朋的博客,回复"666"获面试宝典 摘要 本文讨论关系数据库设计相关的一些内容,涉及关系模型,表结构设计等内容,以学生选修课程讲述设计过程,在尽量讲清楚设计要领的前提下 ...

最新文章

  1. 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)
  2. 02.v-cli快速搭建
  3. 【推荐】关于JS中的constructor与prototype【转】
  4. 细分领域继续进击,海尔电器寻退市增效?
  5. android html ajax请求,android - HTMLUNIT java javascript ajax - Stack Overflow
  6. Java虚拟机结构分析
  7. 【互联网周刊】2022年第6期摘录
  8. 如何学习Python进行数据分析
  9. Android SDK 更新时修改hosts文件仍然无法更新,可试试这个方法……
  10. 静态的通讯录(C语言)
  11. 批处理转成可执行文件的软件
  12. 阿里云块存储快照服务背后的技术原理
  13. T2Admin 完美集成 RDP报表(含:菜单、权限系统)
  14. Tcp ip 网络编程入门(一)
  15. vscode中setting的设置
  16. 来!PyFlink 作业的多种部署模式
  17. 学会写作...【笔记】
  18. 对坐标的曲线积分求做功_对坐标的曲线积分对弧长的曲线积分 二重积分
  19. 如何使用阿里云服务器搭建个人简历网站
  20. vue中使用v-if出现的值回显不了的问题

热门文章

  1. IntelliJ IDEA 乱码:全网最全 4 种方法完美解决 IntelliJ IDEA 控制台中文乱码问题
  2. Linux常用命令与基本操作、填空题、简答题
  3. spring AbstractBeanDefinition创建bean类型是动态代理类的方式
  4. 10034 - Freckles 克鲁斯克尔最小生成树!~
  5. linux查看内存_嵌入式操作系统的内存,你了解多少?
  6. 蓝牙耳机声音一顿一顿的_线控耳机党阵地转移成功,OPPO这款TWS耳机体验满分...
  7. PyTorch C++ API libtorch 简介
  8. 原神服务器维护后抽奖池会更新吗,原神:更新维护一小时,补偿60原石,玩家祈求多维护几天!...
  9. matlab机械手ikine函数,关于Mtalab-robotics工具箱中的fkine和ikine两个函数的问题讨论!...
  10. atomikosdatasourcebean mysql_SpringBoot2整合JTA组件实现多数据源事务管理