redis基础

简介
1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2.Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
3.Redis支持数据的备份,即master-slave模式的数据备份(主从)。
4.原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

安装
1.wget http://download.redis.io/releases/redis-2.8.17.tar.gz
2.tar xzf redis-2.8.17.tar.gz
3.cd redis-2.8.17
4.make
5.cd src
6./redis-server …/redis.conf //从配置文件启动服务
7./redis-cli //测试客户端

数据类型
1.String(字符串)
一个 key 对应一个 value
2.Hash(哈希)
Redis hash 是一个键值(key=>value)对集合。
一个哈希值,类似一个抽屉里面有很多个小盒子,盒子里面装了值,购物车就可以用hash储存,一个用户的购物车为一个抽屉,里面很多商品就是小盒子,商品的SKU等等就是盒子里面的值,也可以理解为一个hash就是一个数据库,每一张表为一个域,域里面有很多值。
用户(抽屉)=>
[
‘短裤’(小盒子)=>[‘七分’,‘黑色’] (里面的值,可传json值)
‘T恤’(小盒子)=>[‘白色’,‘圆领’] (里面的值,可传json值)
]
Cache::hSet(‘cart_’.user_info[‘id’],goods_id,json_encode(data));(thinkphp6中的写法)
3.List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
4.Set(集合)
Redis 的 Set 是 string 类型的无序集合。
5.zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
订单处理实例:
Cache::zAdd(‘order_status_key’,time()+60x20,$order_id);
分数设置为当前时间加20分钟,后台启用命令行,不断检测order_status_key过期则处理订单
6.列表和集合的区别
(1)列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元素的应用。
(2)有序集合类型是使用散列表和跳跃表(Skip list)实现的,所以即使读取位于中间部分的数据速度也很快(时间复杂度是O(log(N)))。
(3)列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)。
(4)有序集合要比列表类型更耗费内存。有序集合类型算得上是 Redis的5种数据类型中最高级的类型了。

命令
1.redis-server //启动
2.redis-cli //链接客户端
3.redis-benchmark //性能测试工具
在这里插入图片描述

事务
WACTH //开启监视(乐观锁)
MULTI //开启事务
EXEC //执行事务
DISCARD //事务取消
1.流程
(1)WATCH xxx 开启乐观锁监视xxx,当xxx的值有变化时事务取消
(2)MULTI 开启事务
(3)redis操作(把一条一条的操作放入队列中,实际并未操作redis)
(4)EXEC(按队列执行redis,当语句为发生错误时,执行成功)

Redis的两种备份(持久化)方式:RDB和AOF
1.RDB备份
(1)对于快照备份而言,如果当前 Redis 的数据量大,备份可能造成 Redis 卡顿,但是恢复重启是比较快速的
(2)rdbcompression yes //导出的文件是否压缩
(3)dbfilename dump.rdb //快照备份路径
(4) ----屏蔽这几个则不执行快照
当 900 秒执行 1 个写命令时,启用快照备份。
当 300 秒执行 10 个写命令时,启用快照备份。
当 60 秒内执行 10000 个写命令时,启用快照备份。
(5)stop-writes-on-bgsave-error yes //后台备份进程出错时,主进程禁止写入
(6)Rdbchecksum yes //导入恢复数据时,是否检验rdb的完整性
(7) dir //备份路径
2.AOF备份
(1)appendonly yes //开启动态备份
(2)appendfilename “appendonly.aof” //备份路径
(3)appendfsync always //每1个命令,都立即同步到磁盘中(还不如直接用mysql)
(4)appendfsync everysec //折中方案每1秒写入一次到磁盘中
(5)appendfsync no //交给计算机自行处理
(6)no-appendfsync-on-rewrite no //正在导出rbd,要不要停止aof
(7)auto-aof-rewrite-percentage 100 //aof文件比上次重写的大小,增长率100%重写
(8)auto-aof-rewrite-min-size 64mb //至少超过64M重写
重写就是拿aof执行redis,其中可以可以去除很多重复命令,比如redis执行了很多次
set name,记录到了aof,这时候重写可以直接获得最后值,这样可以减少aof文件的大小。
3.两种备份方式需要同时开启,rdb在没有达到备份条件的时候,会导致数据丢失
4.RDB恢复速度要更快,AOF粒度更细
5.RDB和AOF同时存在时以AOF来恢复文件,注意前期数据写入未开启AOF,后期突然开启,会导致AOF为空白,系统默认从AOF启动数据,空白数据备份到RDB中,会导致数据丢失*******

数据迁移
直接复制rdb文件

数据类型命令
1.字符串
set
get
del
2.链表
lpush rpush
lrange
lpop rpop
3.集合
sadd
smembers
sismember
srem
4.散列(哈希)
hset
hget
hgetall
hdel
5.有序集合
zadd
zrange
zrangebyscore
zrem

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值