redis基础知识

一. redis介绍

redis是一个key-value类型的内存数据库,整个数据库加载在内存中进行操作,定期通过异步操作把数据flush到硬盘上保存。
redis是纯内存操作,性能出色,每秒可处理超10万次读写操作。而且支持多种数据结构。
redis的缺点是受物理内存限制,不能作海量数据高性能读写。
redis官网地址:https://redis.io

二. redis存储结构

1.string

string是redis的基础数据类型,redis没有int、float、boolean等数据结构,所有基本类型在redis中都以string体现。

  • SET Key Value [EX seconds] [PX milliseconds] [NX|XX]
    EX/PX:设置key有效期
    NX:key不存在时set
    XX:key存在时set
  • GET Key
    key不存在,返回nil
  • GETSET Key Value
    为key设置新value,并返回原value
  • MSET Key Value [Key value]
    批量设置,并覆盖旧值
  • MGET Key [Key]
    返回一个包含所有给定key的值的列表
  • INCR Key
    将key中的value值自增1,返回自增后的值
    若key不存在,value会初始化为0,再INCR
    若类型错误,返回错误
  • INCRBY Key increment
    将key中的value值增加increment

2.List

redis的List是链表型数据结构,可以在List两端插入删除元素

  • LPUSH Key Value [value]
    将value从左到右依次插入到表头

  • RPUSH Key Value [value]
    将value从左到右依次插入到表尾

  • LPOP Key
    移除并返回左侧头部第一个元素

  • RPOP Key
    移除并返回右侧尾部第一个元素

  • LRANGE Key start stop
    返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定
    start和stop下标从0开始

  • LINDEX Key index
    返回指定index下标的元素

  • LSET Key index value
    将key下标为index的元素设置为value

  • LINSERT Key BEFORE|AFTER pivot value
    将新value插入指定pivot值前或后,返回列表长度

3.Hash

哈希表,是一种field-value型数据结构,和传统hash一样。

  • HSET key field value
    将哈希表key中的域field值设为value
  • HGET key field
    返回哈希表key中指定域field的值
  • HMSET Key field value [field value]
    同时将多个域值对设置到哈希表key中
  • HMGET Key field [field]
    返回哈希表key中多个给定域的值
  • HDEL key field [field]
    删除哈希表key中多个指定域
  • HINCRBY key field increment
    为哈希表 key 中的域 field 的值加上增量 increment
  • HGETALL key
    返回哈希表key所有域值对
  • HKEYS key
    返回哈希表key所有域
  • HVALS key
    返回哈希表key所有值

4.Set

redis Set是无序,不可重复的string集合

  • SADD key member [member]
    将多个member加入集合key中
  • SREM key member [member]
    移除集合key中的多个member元素
  • SCARD key
    返回集合key的member数量
  • SMOVE source destination member
    将member从source集合移动到destination集合
  • SMEMBERS key
    返回集合key中所有member

5.Sorted Set

Sorted Set是有序的、不可重复的string集合。Sorted
Set中每个元素都需要指派一个分数score,根据score进行排序。

  • ZADD key score member [score member]
    将多个member元素及score值加入到有序集key中
  • ZREM key member [member]
    移除有序集key中成员
  • ZCOUNT key min max
    返回score在min和max之间的成员数量
  • ZCARD key
    返回有序集key中成员数量
  • ZSCORE key member
    返回有序集key中成员member的score值
  • ZRANK key member
    返回有序集key中member的score排名,从小到大
    ZREVRANK从大到小
  • ZINCRBY key increment member
    有序集key的成员member的score增加increment
  • ZRANGE key start stop [WITHSCORES]
    返回指定排名区间内的成员,按从小到大排序
    ZREVRANGE从大到小
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
    返回score值介于min和max之间的成员,从小到大
    ZREVRANGEBYSCORE从大到小
  • ZREMRANGEBYRANK key start stop
    移除指定排名区间的所有成员
    ZREMRANGEBYSCORE指定score范围

三.Redis持久化

有两种持久化方式,RDB(Redis DataBase) 和AOF(Append Only File)。

RDB是将redis某一时刻存储的数据生成快照并存储到磁盘上。首先会将数据写入到一个临时文件中,等持久化过程结束后,用临时文件替换上次持久化好的文件。对于RDB,redis会单独创建一个子进程来进行持久化。若对数据恢复的完整性不是非常敏感,新快照生成期间的数据可忽略时,可使用RDB。dump.rdb

AOF是将执行过的所有写指令记录下来,在数据恢复时重新执行所有指令。每当有写操作,redis指令会被追加到AOF文件末尾。若AOF文件过大,会提供重写机制,将AOF内容压缩。redis-check-aof
–fix命令可以修复损坏的AOF文件。appendonly.aof

AOF相比RDB生成的文件大,修复速度慢,但恢复数据完整度更高。

四.Redis主从同步

master主 slave从
主redis数据和从redis数据保持同步。主服务器宕机,从服务器继续提供服务。

redis2.8之前,slave建立和master的连接,发送sync命令。master将产生RDB快照,生成快照期间的写命令也会被缓存起来,然后将RDB文件发送给slave。salve将RDB文件保存到磁盘,加载到内存。master将缓存命令转发给slave执行。

redis2.8之后,slave建立和master的连接,发送psync命令。master在内存缓冲区中存储将要发送的内容。slave与master断开重连时,会把master服务器Id和请求偏移位置offset发送出去。master匹配到id后会检查offset是否在缓冲区,在的话就向slave发送增量内容。

五.Redis集群

redis3.0后支持redis cluster。
redis cluster采取虚拟槽分区,所有的key根据哈希函数CRC16[key]&16383映射到0-16383槽内,每个redis节点维护部分槽。集群节点需要slave以保证高可用。
cluster slots 返回槽和节点的映射关系 cluster keyslot key 返回key分配到的槽位置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值