什么是Redis
Redis是一个内存高速缓存数据库,用C语言编写,数据模型是Key-Value
支持丰富的数据结构类型,比如String,list,hash,set,sorted Set。可持久化,保证数据安全!
缓存分为 数据缓存和页面缓存。
类似于新闻列表等的网站适合做页面缓存,而商品展示页面适合做数据缓存。Redis属于数据缓存的范畴。
Redis和memcache比较
- Redis支持k/v数据类型,还提供list,set,zset,hash等数据结构的存储。
- Redis支持master-slave(主-从)模式应用
- Redis支持数据的持久化,将内存中的数据保持在磁盘中,重启的时候再次加载进行使用。
- Redis单个value的最大限制是1GB,memcache只能保存1MB数据。
Linux下安装Redis
- tar zxvf redis-2.6.14.tar.gz 解压文件
- make指令进行编译
创建Redis目录,并拷贝两个文件
mkdir /usr/local/redis cp redis-cli redis-server /usr/local/redis
将/home/lzl/rdtar/redis-2.6.14目录下的redis-conf拷贝到/usr/local/redis中
cp redis.conf /usr/local/redis
在/usr/local/redis目录下启动Redis服务
./redis-server
设置Redis为后台启动程序,在redis.conf文件中进行设置。
daemonize no 改为 yes
- 在./redis-cli中存储数据
Redis的Key-Value
Key的命名规则
除了空格、\n换行外其他的大部分字符都可以使用。
Key的常用操作
String类型操作
- String是redis最基本的类型
- 该类型可以包含任何数据,包括jpg图片或者序列化的对象
- 单个value最大上限是1G字节
- 如果只用string类型,redis是可以被看做加上持久性的memcache。
具体操作
mset key1 key2 … 设置多个key值
mget key1 key2 … 获取多个key值
incr 类似于i++的操作,需要保证value值是整型。创建之后默认为1
decr 类似于i–。
append 追加字符串
substr 截取字符串
List类型的操作
Redis的List是一个双向链表。通过push和pop操作添加和删除元素,既可以当做队列也可以当做栈来使用。
应用场景:可以在Redis的List里保留登录时间最近的10个数据,每次进来一个新登录者就删除一个数据,每次在链表中获取对应的信息,极大的减少资源的消耗。
具体操作
lpush 顶部添加元素 栈
lpop 删除顶部元素 栈
rpush 添加底部元素 队列
rpop 删除底部元素 队列
lrange key1 start end 查看区间数据
llen 查看List长度
ltrim key1 start end 截取指定区间的数据
Set类型的操作
redis的set是string类型的无序集合。
set元素最大可以包含(2的32次方-1)个元素
关于set集合除了基本的添加删除操作,其他有用的操作还包含集合的
取并集,交集,差集。通过这些操作可以很通容易的实现sns中的好友推荐功能。
具体操作
SortSet排序集合类型
和set集合一样是string类型元素的集合,不同的是每个元素都会关联一个权通过权值可以有序的获取集合中的元素。
应用场景:热门帖子的查询
sort set排序集合,都是有值和权来组成。通过权值的比较,来进行排序。
具体操作
Hash数据类型
持久化功能
snap shotting快照持久化
该持久化默认开启,一次性把redis中全部的数据保存一份存储在硬盘中,如果数据非常多就不适合频繁该持久化操作。
持久化设置在redis.conf文件中,可以有以下的保存设置
Redis的key单位之间内变化的越多,快照保存的时间越快。
手动发起快照持久化
指令
./redis-cli bgsave
精细持久化(AOF持久化)
本质:把用户执行的每个“写”指令(添加、删除、修改)都备份到文件中,还原数据的时候就是执行具体指令而已。
开启AOF持久化。
将appendonly no改为appendonly yes
快照设置的三种模式,推荐使用第二种。
内容优化压缩处理命令:
./redis-cli bgrewriteaof
配置Redis主从服务器
可以把redis看做是一个处理速度很快的数据库,一个工程项目中可以设置多个redis服务器,来缓解多用户的请求压力。这里可以设置主Redis服务器进行增、删、改操作。可以配置多个Redis从服务器来进行查询操作。
主要设置还是在redis.conf文件中进行配置。
从服务器的配置如下:写上主服务器的ip以及端口号即可。