Redis简单介绍

一、Redis是什么

Redis是一个开源的内存数据结构存储,用作数据库、缓存和消息代理。它支持数据结构,如字符串、哈希、列表、集合、带范围查询的排序集合、位图、超日志、带半径查询的地理空间索引和流。Redis具有内置的复制、Lua脚本、LRU逐出、事务和不同级别的磁盘持久性,并通过Redis Sentinel和带有Redis集群的自动分区提供高可用性。

二、Redis的数据类型

Redis不是一个简单的键值存储,它实际上是一个数据结构服务器,支持不同类型的值。这意味着,在传统的键值存储中,将字符串键与字符串值相关联,而在Redis中,该值不仅限于简单的字符串,还可以保存更复杂的数据结构。这些数据结构包括:

数据结构 描述
string 二进制安全字符串。
List 根据插入顺序排序的字符串元素集合。
Set 唯一的、未排序的字符串元素的集合。
Sorted set 类似于集合,但每个字符串元素都与一个浮点数(称为score)相关联。元素总是按其分数排序,因此与集合不同,可以检索一系列元素
Hashe 它们是由与值关联的字段组成的映射。字段和值都是字符串。
Bit arrays (or simply bitmaps) 使用特殊命令,可以像处理一个位数组一样处理字符串值:可以设置和清除单个位,将所有位设置为1,查找第一个设置或未设置的位,等等。
HyperLogLog 这是一种概率数据结构,用于估计集合的基数。
Stream 只追加提供抽象日志数据类型的类映射项集合

1、key

Redis的key是二级制安全的,可以用任意的二级制序列作为key,使用key有几点注意事项:

  • 避免key过长,过长的key可以通过hash key 生成一个sha1串解决
  • 避免key过短,尽量保持key的可读性的情况下缩短key的长度
  • 建立一种key的Schema:例如 应用名:业务名:实体名:属性名
  • key的最大允许值是512MB

2、string

string类型是可以与Redis键关联的最简单的值类型。与string相关的命令:

命令 描述
set key value [expiration EX seconds|PX milliseconds] [NX|XX] 如果 key 已经持有其他值, SET 就覆写旧值, 无视类型。 expiration 表示key的生存时间 为空表示不设置生存时间,NX表示只在键不存在时, 才对键进行设置操作,XX表示只在键已经存在时, 才对键进行设置操作。
get key string 检索一个key值
incr key 为键 key 储存的数字值加上一。如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。INCR 命令会返回键 key 在执行加一操作之后的值。
SETNX key value 只在键 key 不存在的情况下, 将键 key 的值设置为 value 。
若键 key 已经存在, 则 SETNX 命令不做任何动作。
SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
SETEX key seconds value 将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。
如果键 key 已经存在, 那么 SETEX 命令将覆盖已有的值。
SETEX 和这两个命令的不同之处在于 SETEX 是一个原子(atomic)操作, 它可以在同一时间内完成设置值和设置过期时间这两个操作, 因此 SETEX 命令在储存缓存的时候非常实用。
PSETEX key milliseconds value 这个命令和 SETEX 命令相似, 但它以毫秒为单位设置 key 的生存时间, 而不是像 SETEX 命令那样以秒为单位进行设置。

GET key

返回与键 key 相关联的字符串值。
如果键 key 不存在, 那么返回特殊值 nil ; 否则, 返回键 key 的值。
如果键 key 的值并非字符串类型, 那么返回一个错误, 因为 GET 命令只能用于字符串值。
GETSET key value 将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值。
如果键 key 没有旧值, 也即是说, 键 key 在被设置之前并不存在, 那么命令返回 nil 。
当键 key 存在但不是字符串类型时, 命令返回一个错误。
STRLEN key STRLEN 命令返回字符串值的长度。
当键 key 不存在时, 命令返回 0 。
当 key 储存的不是字符串值时, 返回一个错误。
APPEND key value 如果键 key 已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key 现有值的末尾。
如果 key 不存在, APPEND 就简单地将键 key 的值设为 value , 就像执行 SET key value 一样。
返回 追加 value 之后, 键 key 的值的长度。
SETRANGE key offset value 从偏移量 offset 开始, 用 value 参数覆写(overwrite)键 key 储存的字符串值。
不存在的键 key 当作空白字符串处理。
SETRANGE 命令会确保字符串足够长以便将 value 设置到指定的偏移量上, 如果键 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ), 那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )进行填充。
SETRANGE 命令会返回被修改之后, 字符串值的长度。
GETRANGE key start end 返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内)。
负数偏移量表示从字符串的末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符, 以此类推。
GETRANGE 通过保证子字符串的值域(range)不超过实际字符串的值域来处理超出范围的值域请求。
GETRANGE 命令会返回字符串值的指定部分。
INCRBY key increment 为键 key 储存的数字值加上增量 increment 。
如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。
如果键 key 储存的值不能被解释为数字, 那么 INCRBY 命令将返回一个错误。
返回 在加上增量 increment 之后, 键 key 当前的值。
INCRBYFLOAT key increment 为键 key 储存的值加上浮点数增量 increment 。
如果键 key 不存在, 那么 INCRBYFLOAT 会先将键 key 的值设为 0 , 然后再执行加法操作。
如果命令执行成功, 那么键 key 的值会被更新为执行加法计算之后的新值, 并且新值会以字符串的形式返回给调用者。
DECR key 为键 key 储存的数字值减去一。
如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作。
如果键 key 储存的值不能被解释为数字, 那么 DECR 命令将返回一个错误。
DECR 命令会返回键 key 在执行减一操作之后的值。
DECRBY key decrement 将键 key 储存的整数值减去减量 decrement 。
如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECRBY 命令。
如果键 key 储存的值不能被解释为数字, 那么 DECRBY 命令将返回一个错误。
DECRBY 命令会返回键在执行减法操作之后的值。
MSET key value [key value …] 同时为多个键设置值。
MSET 是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。
MSETNX key value [key value …]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值