Redis 的认识和基本使用

来源:互联网 发布:js一句话木马 编辑:程序博客网 时间:2024/06/06 00:47

Redis 的认识

Redis 介绍

Redis 是一个开源(BSD许可)的,内存中的数据结构 key-value 存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

Redis 特点

  1. 读写速度快。 每秒可执行大约110000次的写(SET)操作,每秒大约可执行81000次的读(GET)操作。
  2. 丰富的数据类型。 Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
  3. 原子性。 Redis中所有的操作命令都是原子操作,确保了如果两个客户端并发访问,Redis服务器能接收更新的值。

Redis 与其他 key-value 数据库的区别

  1. Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  2. Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

Redis 的基本使用

字符串 string

string类型在redis中是最常见的类型,value存储最大数据量为512M,可以存放json数据,图像数据等等。

  • SET key value
    设置指定 key 的值。
  • GET key
    获取指定 key 的值。
  • GETSET key value
    将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
  • MSET key1 value1 [key2 value2 …]
    同时设置一个或多个 key-value 对。
  • MGET key1 key2 [key3..]
    获取所有(一个或多个)给定 key 的值。
  • SETNX key value
    key 不存在时设置 key 的值。
  • STRLEN key
    返回 key 所储存的字符串值的长度。
  • INCR key
    将 key 中储存的数字值增一。
  • INCRBY key increment
    将 key 所储存的值加上给定的增量值(increment)。
  • DECR key
    将 key 中储存的数字值减一。
  • DECRBY key decrement
    key 所储存的值减去给定的减量值(decrement) 。

哈希 hash

Redis 中 hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。

  • HSET key field value
    将哈希表 key 中的字段 field 的值设为 value 。  eg:  hset person name zhangsan
  • HGET key field
    获取存储在哈希表 key 中指定字段 field 的值。  eg:  hget person name
  • HEXISTS key field
    查看哈希表 key 中,指定的字段 field 是否存在。
  • HDEL key field1 [field2]
    删除一个或多个哈希表字段
  • HLEN key
    获取哈希表中字段的数量
  • HGETALL key
    获取在哈希表中指定 key 的所有字段 field 和值 value
  • HMGET key field1 [field2]
    获取多个给定字段 field 的值
  • HMSET key field1 value1 [field2 value2 ]
    同时将多个 field-value (域-值)对设置到哈希表 key 中。
  • HINCRBY key field increment
    为哈希表 key 中的指定字段的整数值加上增量 increment 。
  • HINCRBYFLOAT key field increment
    为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
  • HKEYS key
    获取所有哈希表 key 中的字段
  • 列表项

    field

列表 List

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

  • LPUSH key value1 [value2]
    将一个或多个值插入到列表头部(从左边插入列表)。  eg:  lpush list 1
  • LPOP key
    移出并获取列表左边的第一个元素
  • RPUSH key value1 [value2]
    在列表尾部中添加一个或多个值(从右边插入列表)。  eg:  rpush list a
  • RPOP key
    移除并获取列表最后一个元素(列表右边第一个元素)
  • LINDEX key index
    通过索引获取列表中的元素
  • LLEN key
    获取列表长度
  • LRANGE key start stop
    获取列表指定范围内的元素
  • LREM key count value
    移除列表元素

    count > 0: 从头往尾移除值为 value 的元素.
    count < 0: 从尾往头移除值为 value 的元素。
    count = 0: 移除所有值为 value 的元素。

集合 Set

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。

  • SADD key member1 [member2]
    向集合添加一个或多个成员
  • SCARD key
    获取集合的成员数
  • SISMEMBER key member
    判断 member 元素是否是集合 key 的成员
  • SMEMBERS key
    返回集合中的所有成员
  • SPOP key
    移除并返回集合中的一个随机元素
  • SREM key member1 [member2]
    移除集合中一个或多个成员
  • SDIFF key1 [key2]
    返回给定所有集合的差集
  • SINTER key1 [key2]
    返回给定所有集合的交集
  • SUNION key1 [key2]
    返回所有给定集合的并集

有序集合 Sorted Set

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。

  • ZADD key score1 member1 [score2 member2]
    向有序集合添加一个或多个成员,或者更新已存在成员的分数
  • ZCARD key
    获取有序集合的成员数
  • ZCOUNT key min max
    计算在有序集合中指定区间分数的成员数
  • ZINCRBY key increment member
    有序集合中对指定成员的分数加上增量 increment
  • ZRANGE key start stop [WITHSCORES]
    通过索引区间返回有序集合成指定区间内的成员[ 可返回分数 ]
  • ZRANK key member
    返回有序集合中指定成员的索引
  • ZREM key member [member …]
    移除有序集合中的一个或多个成员
  • ZREMRANGEBYRANK key start stop
    移除有序集合中给定的排名区间的所有成员
  • ZREMRANGEBYSCORE key min max
    移除有序集合中给定的分数区间的所有成员
  • ZSCORE key member
    返回有序集中,成员的分数值
原创粉丝点击