redis基础知识

redis:

  一个开源的基于内存的轻量级键值数据库(单线程),数据类型string,list,hash,set,zset,hyperloglog。

通信过程:

  1、客户端向服务器发送一个命令;

  2、服务器接受该命令并将其放入执行队列(redis是单线程的执行模型);

  3、命令被执行;

  4、服务器将命令的执行结果返回给客户端。

位图:

  由0和1组成的字符串string。0000100010000010,特定情况下可以节省占用内存。

  可以使用SETBIT、GETBIT命令来处理。

键过期:

  Keys的过期时间使用Unix时间戳存储,即使实例不可用,当前时间戳也不会停止。

  主动过期:redis会每秒10次利用一个基于概率的算法进行主动删除,随机选取20个keys,删除所有已过期的keys,如果expired keys超过25%,继续选取20个keys。

  被动过期:当客户端访问已过期的key时,redis会立即将它删除。

  RDB:执行SAVE或BGSAVE时,过期键不会被保存在rdb文件中。

  AOF:当key过期但未删除,会被正常记录到aof文件中,当过期key被释放,DEL也会被同步到aof文件中;执行 BGREWRITEAOF时 ,数据库键中过期的键不会被记录到aof文件中。

  复制:为了保持一致性,当key被过期时,DEL将会随着AOF文字整合到所有slaves。slaves连接到master不会独立过期keys,当slave被选为master时能够独立地过期key,然后成为master。

管道:

  在通信过程中的第2、3步是取决于redis服务器,第1、4步耗费的时间完全取决于服务器与客户端之间的网络延时;我们可以一次传输多个命令,用来减少服务端与客户端的通信过程;

cat pipeline.txt
# 将命令写入一个文件中
set mykey myvalue
sadd myset value1 value2
lpush mylist value1 value2 value3
get mykey
scard myset

  文件中的每一行必须以 结束,可以使用命令unix2dos实现,需要安装dos2unix工具。

unix2dos pipeline.txt
# 格式处理
cat pipeline.txt | ./redis-cli --pipe
# 通过管道发送命令

事务:

原文地址:https://www.cnblogs.com/houyongchong/p/10374372.html