Redis非关系型数据库学习笔记
单进程
单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率;
epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率;
redis数据库的一些概念及操作
默认16个数据库,类似数组下表从零开始,初始默认使用零号库;
统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上,redis默认端口是6379;
select命令切换数据库:select 0-15;
dbsize:查看当前数据库的key的数量;
flushdb:清空当前库;
flushall;通杀全部库;
redis的五大数据类型
string(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value;
string类型是二进制安全的。意思是redis的string可以包含任何数据。如jpg图片或者序列化的对象 ;
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M;
String是最常用的数据存储类型
list(列表)
redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。它的底层实际是个链表,列表最重要的是顺序,一般我们采用的存取原则是右进左出
阻塞数据从而进行获取数据
删除列表中的数据
实现多日志消息队列同步
set(集合)
redis的set是string类型的无序集合。它是通过HashTable实现的。
set可以应用到操作随机数据或是求数据交并关系的场景中
Set类型的拓展操作:求集合的交并补:sinter sunion sdiff
操作随机数据:大数据推荐等
交并补:可能认识的人
权限校验:校验工作redis最好是提供基础数据而不是boolean校验结果
网站访问量统计:set可以应用于同类型的快速去除(数据过滤)
应用到黑白名单控制
hash(哈希,类似java里的Map)
redis的hash 是一个键值对集合;
redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象;
类似Java里面的Map
实现可应用hash的场景:购物车的id—商品名—-数量三点一线
实现抢购
zset(sorted set:有序集合)
redis的zset 和 set 一样也是string类型元素的集合,且不允许重复的成员;
不同的是每个元素都会关联一个double类型的分数;
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复;
是在set的基础上添加可排序字段
zrange默认排序是值value从小到大进行排列的,可以使用zrervange进行反转展示
sorted_set可以按条件进行获取数据和删除数据(可选withscores参数展示score,limit是限制的展示数量),limit限定的是索引,索引时从0开始的
minmax:限定条件
startstop:限定查询范围,作用于索引
offset count:同样限定查询范围,作用于查询结果(相当于索引从0开始)
命令:zcard:查看集合中有多少数据(key)
zadd一条添加指令中作用key只能有一个,后面加的value和score可以跟多个,格式还是score在前,value在后,这里的value是Set里的理解的说法,因为zset是基于set的,其实标准叫法应该是member(成员)
集合交并补操作:interstore:交
unoinstore:并
aggregate:求和字段(加条件)
zset扩展操作:一般应用到它的排序的特性,比如应用到排名上
查索引:zrank(zrevrank)
获取与修改score的值:zsocre zincrby
score中保存的可以是一个小数,双精度的double。所以可能会丢失精度
redis可以应用于定时任务顺序管理和任务过期管理(分多个scoreed_set)
time指令:获取当前的系统秒时间
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !