Redis 简单入门

一、Redis是什么(数据缓存)

Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案。

二、Redis的优点

异常快速 : Redis是非常快的,每秒可以执行大约110000设置操作,81000个/每秒的读取操作。
支持丰富的数据类型 : Redis支持最大多数开发人员已经知道如列表,集合,可排序集合,哈希等数据类型。这使得在应用中很容易解决的各种问题,因为我们知道哪些问题处理使用哪种数据类型更好解决。
操作都是原子的 : 所有 Redis 的操作都是原子,从而确保当两个客户同时访问 Redis 服务器得到的是更新后的值(最新值)。
MultiUtility工具:Redis是一个多功能实用工具,可以在很多如:缓存,消息传递队列中使用(Redis原生支持发布/订阅),在应用程序中,如:Web应用程序会话,网站页面点击数等任何短暂的数据;

三、安装与启动

安装步骤
wget http://download.redis.io/releases/redis-3.2.6.tar.gz
tar xzf redis-3.2.6.tar.gz
cd redis-3.2.6
make

mkdir /usr/local/redis
cp redis.conf src/redis-server src/redis-cli /usr/local/redis

./redis-server #启动服务
./redis-cli #客户端

设置后台启动服务
redis.conf
daemonize yes —yes 默认后台启动,no 默认前台启动
./redis-server redis.conf 使用配置文件后台启动
databases 16 —默认16个数据库(0-15)

四、Key的使用

不能使用”\n”或空格,其他大部分字符都可以组成key,长度不限制
可以自己定义key的格式,如:object-type:id:field
key的长度不要太长,占内存,查询慢;也不要太短,可读性差

key键操作

exists key                      #测试指定key是否存在
del key1 key2 ... keyn          #删除给定key
type key                        #返回给定key类型
keys pattern                    #返回匹配指定模式的所有key
rename oldkey newkey            #改名字
dbsize                          #返回当前数据库的key数量
expire key seconds              #设置key的有效期
ttl key                         #获取key剩余有效期秒数
select db-index                 #选择数据库(0-15)
move key db-index               #将指定key从当前数据库移动到指定数据库中
flushdb                         #删除当前数据库中所有key
flushall                        #删除所有数据库中所有key

五、redis数据结构

string

string是redis最基本的类型
redis的string可以包含任何数据,包括jpg图片或序列化对象
单个value值最大上限1G
如果只是用string,redis可以被看做加上持久化特性的memcache

string类型操作
set key value                       #设置key对应的值为string类型的value
mset key1 value1 ... keyn valuen    #一次设置多个key的值
mget key1 key2 ... keyn             #一次获取多个key的值
incr key                            #对key的值进行加加操作,返回新的值;可以对新key(创建key,然后加1,值为1)也可以是已有的key(key的信息值必须为整型)
decr key                            #同上,但是进行减减操作(可以使新key也可以是已有的key)
incrby key integer                  #同incr,加指定值
decrby key integer                  #同decr,减指定值
append key value                    #给指定key的字符串值追加value
substr key start end                #返回截取过的key的字符串值

List

list其实是一个双向链表,通过push、pop操作从链表头部或尾部添加删除元素,所以可以用作栈或队列

list类型操作
lpush key string            #在key对应list的头部添加字符串元素
rpop key                    #从list的尾部删除元素,并返回删除元素
lrange key start end        #获取list从start到end的元素,key不存在返回0(开始结尾都包含)
llen key                    #对应list的长度,key不存在返回0,key对应类型不是list,则返回错误
rpush key string            #同上,从尾部添加
lpop key                    #从list头部删除信息,并返回删除元素
ltrim key start end         #截取list,保留指定区间元素(开始结尾都包含)

Set

string类型的无序集合,最大可以包含(2的32次方减1)个元素
除了基本的添加删除之外,还包含集合的取并集(union),交集(intersection),差集(difference),通过这些操作可以很容易的实现sns的推荐好友功能。
注:每个集合中的元素不能重复

set集合操作
sadd key member [member]    #添加string元素到对应key集合中,成功返回1;如果元素已经在集合中,返回0
srem key member [member]    #从key对应集合中删除给定元素,成功返回1
smove p1 p2 member          #从p1对应set中移除给定元素,并添加到p2对应set中
scard key                   #返回集合元素个数
sismember key member        #判断集合中是否存在指定元素
sinter key1 key2 ... keyn   #返回所有给定key的集合的交集
sunion key1 key2 ... keyn   #返回所有给定key的集合的并集
sdiff key1 key2 ... keyn    #返回所有给定key的集合的差集
smembers key                #返回集合中所有元素,结果是无序的

SortSet

和set一样,也是string类型的集合,没有重复元素;不同的每个元素都有一个权,通过权值可以获取集合中的元素。适用于获取热门帖子访问量等

SortSet集合操作
zadd key score member               #添加到元素到集合,元素在集合中存在则更新score,添加成功返回1
zrem key member                     #删除集合中指定元素,返回1表示成功;不存在则返回0
zincrby key incr member             #按照incr幅度增加member的score值,返回score值
zrank key member                    #返回指定元素在集合中的排名(下标),集合中的元素是按score从小到大排序的
zrevrank key member                 #同上,元素按score从大到小排序
zrange key start end [withscores]   #类似lrange,从集合中取出指定区间的元素,返回的是有序结果
zrevrange key start end [withscores]#同上,返回结果按score逆序
zcard key                           #返回集合中元素个数
zscore key element                  #返回指定元素的score
zremrangebyrank key min max         #删除集合中在给定区间的元素,权值由小到大排序

六、持久化

Redis为了内部数据的安全考虑,会把本身的数据以文件的形式保存到硬盘中一份,在服务器重启之后自动把硬盘的数据恢复到内存(redis)中。数据保存到文件中的过程被称为“持久化”过程

一小时发起一次快照持久化,中间发起精细持久化(频率达到秒级)

snap shotting快照持久化

该持久化默认开启,一次性把redis中全部数据保存一份写入硬盘,如果数据非常多(10G-20G)就不适合频繁该持久化操作
快照持久化文件在本地备份文件dump.rdb

在文件redis.conf中设置快照持久化频率(数据修改的频率高,备份的频率也高;修改的频率低,备份的频率也低)

save 900 1          #900s 超过1个key修改发起一次快照保存
save 300 10         #300s 超过10个key修改发起一次快照保存
save 60 10000       #60s  超过10000个key修改发起一次快照保存
dbfilename dump.rdb #配置快照持久化文件名字
dir ./              #配置快照持久化位置
手动发起快照持久化
./redis-cli -h 127.0.0.1 -p 6379 bgsave         #发起对应ip快照持久化
./redis-cli bgsave                              #发起本地快照持久化
./redis-cli lastsave                            #返回上次成功保存到磁盘的unix时间戳
redis 127.0.0.1:6379> SHUTDOWN [NOSAVE] [SAVE]  #同步不保存或保存数据并关闭redis服务器

append only file(AOF持久化)

本质:把用户的每个“写”(增删改)指令备份到文件中,还原数据时就是执行具体的写指令
在文件redis.conf中设置开启AOF持久化,会清空redis中所有数据

appendonly yes                      #开启AOF持久化
appendfilename "appendonly.aof"     #配置AOF持久化文件名字
dir ./                              #配置AOF持久化位置
appendfsync everysec                #aof持久化追加备份频率everysec(每秒持久化一次)/always(来一个追加一次)/no(服务器如果空闲就坐aof持久化)
为aof持久化做优化处理
./redis-cli bgrewriteaof            #启动优化压缩处理(例如多个incr num优化成一个set num)

七、主从模式

为了降低每个redis服务器的负载,可以多设置几个,并设置主从模式
一个服务器负责“写”(增删改)数据,其他服务器负载“读”数据;主服务器会总动将数据同步给从服务器

在redis.conf中配置(从服务器默认禁止写的操作)

slaveof <masterip> <masterport>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值