Redis 基本api操作

Redis 基本api操作

1. redis五大数据类型

1.1 Key(不是五大数据类型,但是是最基础的)

keys *

查看所有的key

set key value

将字符串值 value 关联到 key 。

EXISTS key

判断当前的key是否存在
若 key 存在,返回 1 ,否则返回 0

MOVE key db

将当前数据库的 key 移动到给定的数据库 db 当中。

EXPIRE key seconds

为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。

TTL key

  • 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
    不存在的 key: -2
  • key 存在,但没有设置剩余生存时间:-1
  • 有剩余生存时间的 key: 剩余时间

TYPE key

返回 key 所储存的值的类型。

1.2 String

SET key value [EX seconds] [PX milliseconds] [NX|XX]

  • 如果 key 已经持有其他值, SET 就覆写旧值,无视类型。

  • 对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除

  • EX second :设置键的过期时间为 second 秒。

  • PX millisecond :设置键的过期时间为 millisecond 毫秒。

  • NX :只在键不存在时,才对键进行设置操作。

  • XX:只在键已经存在时,才对键进行设置操作。

  • 对象 set user:1 {name:zhangsan,age:3}

  • 设置一个user:1 对象 值为 json字符来保存一个对象!

  • 这里的key是一个巧妙的设计: user:{id}:{filed} , 如此设计在Redis中是完全OK了!

APPEND key value

  • 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
  • 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

STRLEN key

  • 返回 key 所储存的字符串值的长度
  • key 储存的不是字符串值时,返回一个错误。

INCR、DECR key

  • key 中储存的数字值增一、减一
  • 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR、DECR 操作。
  • 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

INCRBY key increment

  • 将 key 所储存的值加上增量 increment 。
  • 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
  • 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

GETRANGE key start end

  • 返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
  • 负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。

MSET key value [key value …]

  • 同时设置一个或多个 key-value 对。
  • MSETNX,同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在

MGET key [key …]

  • 返回所有(一个或多个)给定 key 的值。

SETRANGE key offset value

  • 用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始
  • “abcdefg”
  • SETRANGE key2 1 xx
  • “axxdefg”

SETNX key value

  • 将 key 的值设为 value ,当且仅当key 不存在

  • 若给定的 key 已经存在,则 SETNX 不做任何动作。

SETEX key seconds value

  • 将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。

  • 如果 key 已经存在, SETEX 命令将覆写旧值。

GETSET key value

  • 将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值。

1.3 List

LPUSH key value [value …]

  • 将一个或多个值 value 插入到列表 key 的表头

LRANGE key start stop

  • 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。

RPUSH key value [value …]

  • 将一个或多个值 value 插入到列表 key 的表尾(最右边)。

  • 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾

LPOP key

  • 移除并返回列表 key 的头元素。

RPOP key

  • 移除并返回列表 key 的尾元素。

LINDEX key index

  • 返回列表 key 中,下标为 index 的元素。

  • 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。

  • 也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

LPUSH key value [value …]

  • 将一个或多个值 value 插入到列表 key 的表头

  • 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头

LLEN key

  • 返回列表 key 的长度。

LREM key count value

根据参数 count 的值,移除列表中与参数 value 相等的元素

count 的值可以是以下几种:

  • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
  • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
  • count = 0 : 移除表中所有与 value 相等的值。

LTRIM key start stop

  • 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

  • 举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。

  • 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。

  • 也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

  • 当 key 不是列表类型时,返回一个错误。

RPOPLPUSH source destination

  • 移除列表的最后一个元素,将他移动到新的列表中

LSET key index value

  • 将列表 key 下标为 index 的元素的值设置为 value 。

  • 当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。

LINSERT key BEFORE|AFTER pivot value

  • 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
  • 当 pivot 不存在于列表 key 时,不执行任何操作。
  • 当 key 不存在时, key 被视为空列表,不执行任何操作。
  • 如果 key 不是列表类型,返回一个错误。

1.4 Set

SADD key member [member …]

  • 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。

  • 假如 key 不存在,则创建一个只包含 member 元素作成员的集合。

SISMEMBER key member

  • 判断 member 元素是否集合 key 的成员。

SMEMBERS key

  • 返回集合 key 中的所有成员。

  • 不存在的 key 被视为空集合。

SCARD key

  • 返回集合 key 的基数(集合中元素的数量)。

SREM key member [member …]

  • 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略

SRANDMEMBER key [count]

  • 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。

SMOVE source destination member

  • 将 member 元素从 source 集合移动到 destination 集合。

数字集合类:

  • 差集 SDIFF 返回第一个有第二个没有的数据
  • 交集 SINTER 返回两个共有的数据
  • 并集 SUNION 返回两个合并后的结果

SDIFF key [key …]

  • 返回一个集合的全部成员,该集合是所有给定集合之间的差集。

  • SDIFF key1 key2 返回key1有但是key2没有的数据集

1.5 Hash

Map集合,key-map! 时候这个值是一个map集合! 本质和String类型没有太大区别,还是一个简单的key-vlaue!

hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息!

hash 更适合于对象的存储,String更加适合字符串存储!

简单的来讲:hash就是套娃…

HMSET key field value [field value …]

  • 同时将多个 field-value (域-值)对设置到哈希表 key 中。

  • 此命令会覆盖哈希表中已存在的域。

  • 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。

HMGET key field [field …]

  • 返回哈希表 key 中,一个或多个给定域的值。

  • 如果给定的域不存在于哈希表,那么返回一个 nil 值。

HGETALL key

  • 返回哈希表 key 中,所有的域和值。

  • 在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

HDEL key field [field …]

  • 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。

HLEN key

  • 返回哈希表 key 中域的数量。

HEXISTS key field

  • 查看哈希表 key 中,给定域 field 是否存在。

HKEYS key

  • 返回哈希表 key 中的所有域。

HVALS key

  • 返回哈希表 key 中所有域的值。

HINCRBY key field increment

  • 为哈希表 key 中的域 field 的值加上增量 increment 。

  • 增量也可以为负数,相当于对给定域进行减法操作。

  • 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。

  • 如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。

1.6 Zset(SortedSet 有序集合)

Redis Sorted Sets are, similarly to Redis Sets, non repeating collections of Strings. The difference is that every member of a Sorted Set is associated with a score, that is used keep the Sorted Set in order, from the smallest to the greatest score. While members are unique, scores may be repeated.

多了个scores 可以用来排序

ZADD key score member [[score member] [score member] …]

  • 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

  • 如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。

  • score 值可以是整数值或双精度浮点数。

  • 如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

  • 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

  • 具有相同 score 值的成员按字典序(lexicographical order)来排列(该属性是有序集提供的,不需要额外的计算)。

  • 可选的 LIMIT 参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。

  • 可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。

  • min 和 max 可以是 -inf 和 +inf,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。

ZRANGE key start stop [WITHSCORES]

  • 返回有序集 key 中,指定区间内的成员。

  • 其中成员的位置按 score 值递增(从小到大)来排序。

  • 具有相同 score 值的成员按字典序(lexicographical order )来排列。

  • 如果你需要成员按 score 值递减(从大到小)来排列,请使用 ZREVRANGE 命令。

  • 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。

  • 也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

  • 可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。

ZCARD key

  • 返回有序集 key 的基数。

ZCOUNT key min max

  • 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
  • min 和 max 可以是 -inf 和 +inf
Redis API文档。Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。redis的官网地址,非常好记,是redis.io。(域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地)目前,Vmware在资助着redis项目的开发和维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值