市面上不少存储系统和编程语言内部使用CAS机制实现计数功能,会有必定的cpu开销,但在redis彻底不存在这个问题php
redis为何单线程还能保持操做如此之快:java
1.纯内存方法,全部数据放在内存中,内存的响应时长大约为100纳秒,这是redis达到秒万级别访问的最重要基础node
2.非阻塞I/O,epoll模型,再加上redis自身的事件处理模型将epoll中的链接,读写,关闭都转换为事件python
3.单线程避免了线程切换和竞态产生的消耗c++
redis特性:速度快,基于键值对的数据结构服务器,丰富的功能,简单稳定,客户端语言多(java,php,python,c,c++,nodejs等),持久化(RDB,AOF),主从复制,高可用和分布式(redis sentinel)redis
redis使用场景:计数器,排行榜系统,缓存,社交网络,消息队列系统数据库
redis不能够使用场景:数据量很是大(每日几亿用户行为数据),冷数据(不常使用的数据,内存的消耗)编程
redis默认端口号6379 缓存
通用全局命令:服务器
keys * 查看全部的健
dbsize 返回当前数据库中健的总数,时间复杂度0(1),不会遍历全部健,并且直接获取redis内置的健总数变量
exists key 是否存在,存在1,不存在0
del key 删除,返回删除key的个数
expire key seconds 设置过时时间 秒
ttl 返回键的剩余过时时间,-1 未设置过时时间 -2 不存在,大于等于0 剩余过时时间
type key 健的数据结构类型(string,list,hash,set,zset) ,实际上每种数据类型都有对应的合适的内部编码