17 redis -key设计原则

书签系统
create table book (
bookid int,
title char(20)
)engine myisam charset utf8;insert into book values 
(5 , 'PHP圣经'),
(6 , 'ruby实战'),
(7 , 'mysql运维'),
(8, 'ruby服务端编程');create table tags (
tid int,
bookid int,
content char(20)
)engine myisam charset utf8;insert into tags values 
(10 , 5 , 'PHP'),
(11 , 5 , 'WEB'),
(12 , 6 , 'WEB'),
(13 , 6 , 'ruby'),
(14 , 7 , 'database'),
(15 , 8 , 'ruby'),
(16 , 8 , 'server');# 既有web标签,又有PHP,同时还标签的书,要用连接查询

select * from tags inner join tags as t on tags.bookid=t.bookid
where tags.content='PHP' and t.content='WEB';换成key-value存储
用kv 来存储
set book:5:title 'PHP圣经'
set book:6:title 'ruby实战'
set book:7:title 'mysql运难'
set book:8:title ‘ruby server’sadd tag:PHP 5
sadd tag:WEB 5 6
sadd tag:database 7
sadd tag:ruby 6 8
sadd tag:SERVER 8: 既有PHP,又有WEB的书
Sinter tag:PHP tag:WEB  #查集合的交集
: 有PHP或有WEB标签的书
Sunin tag:PHP tag:WEB查:含有ruby,不含WEB标签的书
Sdiff tag:ruby tag:WEB #求差集
Redis key 设计技巧1: 把表名转换为key前缀 如, tag:
2: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid
3: 第3段放置主键值,如2,3,4...., a , b ,c
4: 第4段,写要存储的列名用户表 user  , 转换为key-value存储
--------------------------------------------------userid username passworde email
--------------------------------------------------
9 Lisi 1111111 lisi@163.com
--------------------------------------------------set user
:userid:9:username lisi set user:userid:9:password 111111 set user:userid:9:email lisi@163.comkeys user:userid:9*2 注意: 在关系型数据中,除主键外,还有可能其他列也步骤查询, 如上表中, username 也是极频繁查询的,往往这种列也是加了索引的.转换到k-v数据中,则也要相应的生成一条按照该列为主的key-value Set user:username:lisi:uid 9 这样,我们可以根据username:lisi:uid ,查出userid=9, 再查user:9:password/email ...

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

★Linux磁盘配额的使用 ★——牛刀小试

磁盘配额的作用:限制普通用户使用磁盘的空间和创建文件的个数,不至于因为个别人的浪费而影响所有人的使用 需要用户程序quota软件包 #rpm -qa | grep quota 查看quota软件包安装没 #mount -o usrquota,grpquota /dev/hda1 /mnt/one 使用usrquota,grpq…

mysql对表中添加属性_菜鸟笔记—数据分析师MySQL篇(一)

简单说一下我写这份学习笔记的原因,由于工作的原因,想换一份工作,对于毕业已经快6年了,再次重新学习就需要付出很大的勇气和努力,如果态度还不能及时调整,最近找工作遇到的窘境就不言而喻了。去年底报了一个…

xcode工程命令行生成ipa安装包

主要使用两个命令 xcodebuild&#xff1a;将xcode工程打包成.app文件 xcrun&#xff1a;将app打包成.ipa文件 下面是写好的ant脚本&#xff1a; 1 <?xml version"1.0" encoding"UTF-8"?> 2 <project default"release" name"Pack…

matlab打开笔记本摄像头_如何解决笔记本电脑摄像头异常问题

如果您遇到笔记本电脑相机异常问题(无法侦测视讯装置、视讯无画面、视讯画面异常、视讯画面颠倒等等)&#xff0c;请参考以下疑难解答方式依序尝试。提供应用程序权限 / 检查防病毒软件/ 更新Windows Update / 更新相机驱动程序/透过系统还原点还原系统/ 系统还原1. 提供应用程…

边框颜色为 tintColor 的 UIButton

创建一个 UIButton 的子类&#xff0c;重写其方法&#xff1a; - (void)drawRect:(CGRect)rect {[[self layer] setCornerRadius:CORNER_RADIUS];[[self layer] setMasksToBounds:YES]; [[self layer] setBorderWidth:1];[[self layer] setBorderColor:self.tintColor.CGColo…

netty SimpleChannelInboundHandler类继承使用

2019独角兽企业重金招聘Python工程师标准>>> 继承一个SimpleChannelInboundHandler来实现我们的Client&#xff0c;我们需要重写其中的三个方法&#xff1a; package NettyDemo.echo.handler;import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; …

高中关于人工智能方面的课题_如何看待计算机专业开始设置人工智能课程

首先&#xff0c;当前计算机专业当中设置与人工智能相关的课程是一个必然的趋势&#xff0c;随着人工智能技术开始逐渐实现落地应用&#xff0c;未来计算机相关专业的课程当中&#xff0c;人工智能课程的比重也会逐渐提升&#xff0c;而且一定要重视这些课程&#xff0c;这对于…

Linux命令-目录处理命令:mkdir

mkdir /tmp/beijing mkdir -p /tmp/shijiazhuang/yuhuaqu 一条命令可以同时创建父目录和子目录 mkdir /tmp/beijing/chaoyangqu /tmp/beijing/dongchengqu /tmp/beijing/tongzhouqu 同时创建多个目录

tableau 倒序都倒了_Tableau优秀作品拆解复刻01-是时候终结瘘管病了

写在最前面&#xff1a;这个复刻系列是学习tableau官网库中的优秀作品。学习他们亮眼图表的制作细节&#xff0c;仪表板的排版&#xff0c;颜色的搭配以及交互。tableau库的链接&#xff1a;优秀作品都在这里展示。库​public.tableau.com1 整体布局 颜色&#xff1a; 采用橙色…

目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结(转)

做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧&#xff0c;它可以将数据以键值对儿的形式储存起来&#xff0c;取值的时候通过KEY就可以直接拿到对应的值&#xff0c;非常方便。在Objective-C语言中 词典对象就是做这个事情的&#xff0c;不过在同一个词典对象中…

android string数组转json_移动端开发基础【20】pages.json的配置项pages

uni-app项目是通过pages节点配置应用由哪些页面组成&#xff0c;pages节点接收一个数组&#xff0c;数组每个项都是一个对象&#xff0c;其属性值如下&#xff1a;(1) 属性&#xff1a;path类型&#xff1a;String描述&#xff1a;配置页面路径(2) 属性&#xff1a;style类型&a…

java中重载和重写

重载&#xff1a; 同一个类中定义名称相同但参数个数或类型不同的方法&#xff0c;因此java可根据参数的个数或类型的不同来调用相应的方法。 重写&#xff08;覆盖&#xff09;&#xff1a; 在子类中&#xff0c;定义名称&#xff0c;参数个数与类型均与父类完全相同的方法&am…

thinkphp 内置函数详解

D&#xff08;&#xff09; 加载Model类M&#xff08;&#xff09; 加载Model类 A&#xff08;&#xff09; 加载Action类L&#xff08;&#xff09; 获取语言定义C&#xff08;&#xff09; 获取配置值 用法就是 C&#xff08;"这里填写在配置文件里数组的下标"…

dual mysql 获取序列_如何使用mysql 一次查询多个序列

postgresql使用的sql语句如下&#xff1a;selectt.seqValuefrom(selectnextval(seq_attr_id)seqValue,generate_series(1,5)seqNum)t&#xff1b;oracle使用的sql语句如下&#xff1a;selectseq_attr_id.nextvalfro...postgresql使用的sql语句如下&#xff1a;select t.seqValu…

PHP多线程的实现(PHP多线程类)

通过WEB服务器来实现PHP多线程功能。 当然&#xff0c;对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果&#xff0c;并不是真正意义上的多线程。 但不管怎么样&#xff0c;它还是能满足我们的一些需要的&#xff0c;在需要类似多线程的功能方面…

SPOJ Problem 6219:Edit distance

LCS问题&#xff0c;状态转移方程为f[i][j]min(f[i-1][j],f[i][j-1],f[i-1][j-1])1,若a[i]b[j]则f[i][j]f[i-1][j-1] #include<cstdio> #include<cstring> #define max(a,b)a>b?a:b #define INF 1000005 int t,i,j,k,l1,l2,q; char a[2005],b[2005]; int f[200…

int main() 与 void main()

从大一入学刚接触C到现在已满7个月了&#xff0c;虽然刚开始就知道int main才是标准的写法&#xff0c;但一直没有深刻理解为什么不能用void main而必须使用int main。 刚好最近有非计算机相关专业学C的同学问我int main、main和void main有什么区别&#xff0c;便觉得是时候好…

Socket、Http、TCP/IP、UDP的联系与区别

HTTP协议&#xff1a;简单对象访问协议&#xff0c;对应于应用层 &#xff0c;HTTP协议是基于TCP连接的 tcp协议&#xff1a; 对应于传输层 ip协议&#xff1a; 对应于网络层 TCP/IP是传输层协议&#xff0c;主要解决数据如何在网络中传输&#xff1b;而HTTP是应用层协…

honeywell扫码枪取消回车_霍尼韦尔条码扫描器常见问题与解决方法

原标题&#xff1a;霍尼韦尔条码扫描器常见问题与解决方法对于用户使用无线条码扫描器还是有线&#xff0c;再使用过程中难免会遇到一些小问题&#xff0c;又不知道这么解决&#xff0c;下面兆麟条码技术部提供一些条码扫描器出现的问题以及解决方法&#xff0c;供大家参考学习…

Ubuntu Server 分区案例

为什么80%的码农都做不了架构师&#xff1f;>>> 只有一台服务器&#xff0c;配置硬盘1TB&#xff0c;内存4GB&#xff0c;既要做开发服务器&#xff0c;又要做Web服务器和数据库服务器&#xff0c;分区如下&#xff1a; 挂载点大小分区格式 /boot512MBext4/20GBext…