Redis概述:
- Redis是目前市面上很火的一个的一个开源的,C语言编写的基于内存,也可以持久化的Key-value的非关系型数据库,其主要优点就是性能,非常快,缺点也比较明显,因为是内存数据库,所以存储的数据量跟机器的内存息息相关。
redis杂项知识:
- 单进程:
单进程来处理客户端的请求,对读写等事件的响应是通过epoll函数的包装来做的,Redis的实际处理速度完全依靠主进程的执行效率。(epoll函数是Linux内核为处理大批量文件描述符而做了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统的CPU利用率) - 默认十六个数据库,类似数组下标从零开始,默认使用零号库
- select命令切换数据库: select 6 这是切换到第七个数据库,select 0 切换到第一个数据库
- dbsize:查看当前数据库的key的数量
- flushdb:清空当前库
- flushall:清空所有库
Redis五大数据类型:
- String字符串:
redis中最基本的数据类型,一个key对应一个value,是二进制安全的,意思就是可以包含任何数据类型,万金油。例如jpg图片或者序列化的对象,理论上一个value中最大可以放512M数据 - Hash(哈希,类似java里的map)
Redis Hash是一个键值对集合,是一个string类型field和value的映射表,特别适合用于存储对象。value类似java里的Map<String,Object> - List 列表
列表是简单的字符串列表,基于Linked List实现,底层是一个链表,在头部或者尾部添加元素特别快,但是查询就没那么快了 - Set 集合
Set是String类型的无序,无重复集合,它是通过HashTable实现的 - ZSet(sorted Set 有序集合)
String类型的无重复集合,与Set不同的是ZSet每个元素都会关联一个double类型的分数,就是通过分数来进行从小到大排序的,ZSet的成员是不允许重复的,但分数可以重复。
Redis常用命令:
- Key:
keys * 查看所有key
exists keyName 判断该key是否在库中存在,例:exists k1
move keyName db 移动该key到某个库中,例:move k1
2。将k1移动到下标为2的库中
expire keyName time 设置该key过期时间单位秒 例:expire k1 2。两秒后过期
ttl keyName 查看该key还有多久过期。-1 永不过期 ,-2 已过期
type keyName 查看该key的数据类型