redis学习第一天

redis前沿基础

ping,测试连接

这是redis的中文官网

:查看是否存在EXSITS
SET 
移除 move
过期时间expire key
ttl查看剩余时间
keys * 查看所有得key
incr key访问一下自动加一
decr key访问一下自动减去一
incr key 2 步长
所有得list都是l开头得
lpush list key左边
rpush list key右边
lrange list 0 -1获取全部的值
lpop 移除
lindex list 1 通过下表获取某一个值
llen  list        list的长度
lrem list 1 key  移除指定的值
ltrim key 0 1 通过下表截取指定的长度,获得剩下的元素
lset list 0 item 将列表中的值替换
hset 设置一个hash值
hget获得一个hash值
hmset设置多个hash值
hmget获取多个hash值
hmgetall获取一个key中的所有hash值
hyporlog,相当于set,当时内存占用很少,统计数量,如果允许容错。
不允许容错的话,只能使用set,只有12k很少的内存的。
 bitmaps
 只要两个状态就非常好48kb十分省内存
解决,位图只有01两个状态
统级用户,活跃不活跃,登陆,未登录,
setbit sign 0 1
周一0,打卡1
setbit 四姑娘1 1
周二1 打卡1
getbit sign 0
bitcount sign 0 统计打卡记录

redis事务

本质:一组命令的集合
一个事务 的所有命令都会被序列化,在事务的执行过程中,会按照顺序执行。
一次性,顺序性,排他性(就是不能被打扰)

multi(开启事务)
命令入队
exec(执行事务)
discard(取消事务)中间的是不执行的
如果是代码优问题的话,事务是不会被执行的
如果是语法错误的话,那么事务会执行的,会抛出异常,其他事务会执行

监控watch

悲观锁
认为什么时候都是错的,无论做什么都会上锁

乐观锁
认为都是对的,所以不会上锁,更新数据的时候要去判断一下,是否修改过数据
获取version
更新比较version
就是如果多线程的话,如果先监听原来的值,在另一个线程发生改变后,是不会修改成功
所以一般都是使用乐观锁,比较是否修改
改正的话就是先将原来监控的值取消掉,然后再进行重新监控,这样的话才能修改成功

Redis 提供了持久化功能。

RDB


在指定的时间间隔内将内存中的数据集快照写入磁盘。

也就是 Snapshot 快照,恢复时是将快照文件直接读到内存里。

Redis会单独创建(fork)一个子进程来进行持久化。

会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。

整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。

如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那 RDB 方式要比 AOF 方式更加的高效。

RDB 的缺点是最后一次持久化后的数据可能丢失。


优点

适合大规模的数据恢复。

对数据完整性和一致性要求不高时适用。

缺点

在一定间隔时间做一次备份,所以如果 redis 意外 down 掉的话,就会丢失最后一次快照后的所有修改。

Fork 的时候,内存中的数据被克隆了一份,大致 2 倍的膨胀性需要考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值