一、基础知识
1、单进程
单进程模型来处理客户端的请求,对读写等事件的响应是通过对epooll函数包装来做到的,redis的实际处理速度完全依靠主进程的执行效率
Epoll是linux内核为处理大批量文件描述而作了改进的epoll,是linux下多路复用IO接口select/poll的
它能显著提高程序在大量并发连接中之一少量活跃情况下的系统CPU利用率
2、默认16个数据库,类似数组下标从零开始初始末日使用零号库
3、Select命令切换数据库
4、Dbsize查看当前数据库的key数量
5、Flushdb:清空的当前库
6、Flushall:通杀全部库
7、统一密码管理,16个库的都是相同的密码,要么都ok要么都连不上
8、redis索引都是从零开始的
9、默认端口是6379
二、redis的五大数据类型
1、String(字符串)
String是redis最基本数据类型,一个key对应一个value
String类型是二进制安全的,即redis的string可以包含任何数据。比如jpg图片或者序列化对象
string是redis最基本数据类型,一个redis中字符串value最多可以是512M
2、Hash(哈希类似java中map)
redis hash是一个键值对集合 Redis
hash是一个string类型的field和value的映射表,hash特别时候用于存储对象
3、List(列表)
redis列表是简单的字符串列表,按照插入顺序排序:你可以添加一个元素到列表头或者尾部,底层是个链表
4、Set(集合)
redis的set是string类型的无序集合。它是通过HashTable实现实现的
5、Zset(sorted set 有序集合)
redis zset和set一样也是string类型的元素集合,并且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数
redis正是通过分数来为集合中的成员进行从小到大的排序的,zset的成员是唯一的,但分数(score)却可以重复
三、常用命令
1、redis键(key)
DEL key 存在key时删除key
DUMP key 序列化key,并返回序列化的值
EXISTS key 判断key是否存在
EXPIRE key seconds 为给定的key设置过期时间
KEYS pattern 查找所有符合给定模式(pattem)的key
MOVE key db 将当前数据库中key移动到指定db中
PERSIST key 移除key的过期时间,key将持久保存
PTTL key 以毫秒为单位返回key的剩余过期时间
TTL key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
PEXPIRE key timestarmo 为key设置过期时间,接受时间参数为时间戳
PEXPIREAT key milliseconds-timestamp 设置key过期时间的时间戳以毫秒计算
2、redis字符串(String)
SET key value 设置指定key的值
GET key 获取指定key的值
STRLEN key 返回key所存储的字符值的长度
SETNX key value 只有在key不存在时设置key的值
GETRANGE key start end 返回key中字符串值的子字符
GETSET key value 将给定的key的值设为value并返回key的旧值
GETBIT key offset 对key所存储的字符串值,获取指定偏移量上的位(bit)
MGET key1 [key2…] 获取所有(一个或者多个)给定key的值
SETBIT key offset value 对key所存储的字符串值,设置或清除指定偏移量上的位(bit)
SETEX key seconds value 将值value关联到key,并将key的过期时间设为seconds(以秒为单位)
SETRANGE key offset value 用value参数覆写给key所存储的字符串值,从偏移量offset开始
3、Redis列表(List)
4、redis集合(set)
5、redis哈希(Hash)
6、Redis有序集合Zset(sort set)
四、常见redis.conf