Redis第一天
Redis简介
Redis是一个高可用的,开源的,高性能的非关系型数据库
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
配置说明
查看设置信息:CONFIG GET CONFIG_SETTING_NAME
CONFIG GET loglevel
CONFIG GET *
获取设置信息:CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
CONFIG SET loglevel"notice"
CONFIG GET loglevel
配置参数说明:
启用守护进程:daemonize no
指定Redis的守护进程PID pidfile /var/run/redis.pid
指定端口port 6379
绑定的主机地址bind 127.0.0.1
客户端闲置多长时间关闭timeout 300(若设置为0,则会关闭此功能)
指定日志级别loglevel verbose(debug、verbose、notice、warning,默认为verbose)
日志记录方式logfile stdout
设置数据库的数量databases 16
指定多长时间,多少次更新操作save
存储到本地数据库时是否压缩rdbcompression yes
(Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大)
指定本地数据库文件名dbfilename dump.rdb
指定本地数据库存放目录dir ./
当本机为slav服务时,设置master服务的IP地址及端口
slaveof
设置同一时间最大客户端连接数,默认无限制maxclients 128
指定Redis最大内存限制maxmemory
指定是否在每次更新操作后进行日志记录appendonly no
指定更新日志文件名appendfilenameappendonly.aof
指定更新日至条件
no等待操作系统进行数据缓存时更新到磁盘(快)
always每次更新后,自己手动调用fsync()将数据更新到磁盘。(慢,安全)
everysec每秒执行一次(折衷,默认值)
appendfsync everysec
指定是否启用虚拟内存机制,默认novm-enabled no
虚拟内存文件路径vm-swap-file/tmp/redis.swap
将所有大于vm-max-memory的数据存入虚拟内存vm-max-memory 0
Redisswap文件分成了很多的page,一个page不能被多个对象共享
vm-page-size 32
设置swap文件中的page数量 在磁盘上每8个pages将消耗1byte的内存。
vm-pages 134217728
设置访问swap文件的线程数(不要超过机器核数)默认4
vm-max-threads4
设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启
glueoutputbufyes
指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
hash-max-zipmap-entries64
hash-max-zipmap-value 512
指定是否激活重置哈希,默认为开启
activerehashingyes
指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件
include/path/to/local.conf
Redis数据类型
Redis包含五种数据类型:String,hash,list,set以及zset
String
是Redis最基本的数据类型,一个key对应一个value,是二进制安全的,所以可以包含任何数据类型(jpg或者是序列化的对象)。
一个key最大可以存储512MB。
使用set和get方法存取
Hash
Redis hash是一个键值(key=>value)对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis HMSET,HGETALL
每个hash可以存储232 -1键值对(40多亿)。(2的32次方-1)
4294967295,每个列表可存储40多亿
List
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
Lpush和lrange
Set
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
sadd key member
Zset(sorted set:有序集合)
Rediszset和set一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd key score member