暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis tips(一)——基础

爱可可的人生记录仪 2019-11-26
174
Redis 是一个使用 ANSI C编写的开源、支持 网络、基于 内存、单线程模型、可选持久性的键值对存储数据库。


特性

1.速度快

redis基于内存,C语言,同时是单线程的架构,所以速度很快,可以达到10w QPS。

2.基于键值对的数据结构

主要提供字符串,哈希,列表,集合,有序集合,同时在字符串基础上演变出了位图和HyperLogLog这两种数据结构。3.2版本加入了GEO功能。

3.丰富的功能

键过期(缓存),发布订阅(消息系统),支持Lua,提供简单的事务功能,流水线(减少网络开销)

4.简单稳定

源码少,bug少

5.客户端语言多

交互涵盖所有主流编程语言

6.持久化

RDB和AOF,可以将数据存在硬盘

7.主从复制

8.高可用和分布式

Sentinel和Cluster


使用场景

缓存,排行榜系统(热度排行),计数器应用(网站播放数,浏览数等),社交网络(赞,粉丝等),消息队列。redis也不是万金油,过多的数据会造成巨大的成本,对数据的正确管理和使用。


安装启动

下载源码包,编译安装,命令拷贝。地址:http://redis.io/download

启动:建议采用配置文件启动 redis-server usr/local/redis/redis.conf

客户端连接:redis-cli -h {ip} -p {port} {commond}

关闭:redis-cli shutdown (不要使用kill强杀,会导致数据丢失)

偶数版本号为稳定版,尽量选用3.0以上版本(加入了cluster)


全局命令

1.查看所有键—— keys * (大量健时,线上环境禁用)

2.键总数——dbsize

3.检查键是否存在——exists key (存在为1)

4.删除——del key

5.键过期——expire key seconds

6.键数据结构类型——type key(键不存在返回none)

字符串常用命令

1.设置值——set,setnx

2.获取值——get

3.批量设置——mset

4.批量获取——mget 

批量操作大大提高了效率

5.计数——incr、decr

其他数据类型命令大同小异,参考网址:http://doc.redisfans.com/


内部编码

每种数据结构都有自己底层的内部编码,可用object encoding key查询


redis架构

redis是单线程的架构,所有命令排队按序执行,但为什么可以这么快呢?因为使用内存,这是基础,同时单线程避免了竞争和切换,而且redis采用了epoll模型,这个模型之前nginx介绍过了,所以说,幸福的家庭都是相同的,不幸的家庭各有各的不幸。


慢查询

慢查询可以帮助我们找到redis的瓶颈,注意点:1.slowlog-max-len不会占用大量内存,建议1000以上。2.slowlog-log-slower-than默认10ms,对于高流量场景可以设置为1ms 3.慢查询只记录执行时间,不记录排队和网络传输的时间。


参考资料:付磊、张益军.Redis开发与运维.北京:机械工业出版社,2017.02.


部分内容来自网络,如有侵权请联系作者删除。

文章转载自爱可可的人生记录仪,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论