- redis 的set指令默认按照字符串存储,所以可以不加双引号,但是如果设置的字符串中间有空格则需要加双引号
- k已经存在,会发生覆盖
- append的k不存在相当于set一个k
- 在方法后加nx 大多数指按照原子性进行操作
- Getrange 方法不支持回绕操作,即start 必须大于 end 比如 getrange k1 -1 -3 就是错误的,会返回一个空串,且正着数索引是从0开始,倒着数索引是从-1开始
- Serrange方法如果你设置的值的长度大于指定索引到末尾的长度,则会将指定索引到末尾这一段替换为你指定的这一段,相反,则只会替代等长的一段,如 k1设置的值为hello,如果调用了setrange k1 3 shuai 则k1的值会变为 helshuai,如果调用了setrange k1 3 s 则k1的值会变为helso
- 什么是redis持久化,简单来说就是把redis中的数据按一定的规则放持久化到磁盘上的文件中
- 什么是rdb持久化规则?在指定的时间间隔内将内存中的数据集快照写入磁盘,也就snapshot快照。恢复的时候将快照文件读入到redis的内存中即可,此方法异常终止可能会导致数据丢失
- 什么是aof持久化规则?以日志的形式来记录每个写操作(增删改,不包括查,以增量的方式保存),将redis执行过的所有写指令保存下来,只允许追加文件,不允许修改文件,然后以后启动redis时就会读取该文件,将保存的指令按照记录的顺序从前到后全部执行一遍,达成构建或恢复数据的效果,命令写入时先写入aop缓冲,再通过aof持久化策略同步到aof文件,随着文件越来越大会触发重写策略(也可以手动重写),他也会进行优化减少文件大小,比如同时对一个key进行set操作,就会去掉前面的一条。
10、linux小技巧:使用env指令可以查看环境路径,就是path后面的路径,这些路径无论在哪个目录下都可以执行
11、redis事务有单独隔离性,不能保证原子性,没有回滚操作,他能检测出语法错误,从而这时放弃掉这个事务,你调用exec所有指令都不会得到执行,但是因为数据类型等发生的问题他检测不出来,比如incr一个字符串,这是调用exec会部分成功,部分失败,这是不具备原子性。redis事务没有隔离级别的概念
12、什么是悲观锁?每次取出数据,都会对这个数据上锁,这样别人来拿这个数据,就会block(阻塞),直到上个操作完成数据操作后解锁才能拿到
13、什么是乐观锁?每次去拿数据的时候都不会上锁,但在更新的时候一定会先去判断这个数据有没有被别人更新过(利用版本号机制,判断版本号是否与本身第一次拿到的版本相同),从而决定是否更新数据,如果修改完成会立马修改版本,而且在修改这个版本的时候别人是不能对数据进行操作的,redis就是利用这种check-and-set机制实现事务的,乐观锁进行更新时,需要时原子性的
标签:文件,set,redis,k1,细节,操作,数据 From: https://blog.csdn.net/yw2490614330/article/details/144038863