您现在的位置是:首页 > 正文

redis(2)-api-string

2024-01-30 23:10:05阅读 0

字符串
字符串类型是Redis最基础的数据结构。 首先键都是字符串类型, 而且其他几种数据结构都是在字符串类型基础上构建的, 所以字符串类型能为其他四种数据结构的学习奠定基础.字符串类型的值实际可以是字符串(简单的字符串、 复杂的字符串(例如JSON、 XML) ) 、 数字(整数、 浮点数) , 甚至是二进制(图片、 音频、 视频) , 但是值最大不能超过512MB。
1.常用命令
(1)设置值
set key value [ex seconds] [px milliseconds] [nx|xx]
返回结果为OK代表设置成功.·ex seconds: 为键设置秒级过期时间。·px milliseconds: 为键设置毫秒级过期时间。·nx: 键必须不存在, 才可以设置成功, 用于添加。·xx: 与nx相反, 键必须存在, 才可以设置成功, 用于更新。
除了set选项,Redis还提供了setex和setnx两个命令
setnx key value
如果key不存在则设置成功返回1,不然返回0。
set key value xx
如果key存在则返回OK 不存在返回nil失败。根据setnx的特性只有一个客户端能设置成功, setnx可以作为分布式锁的一种实现方案。例如我的本币系统中,当session连接至客户端时,我的两台服务器都会受到onConnect信息。同时我的服务器需要发送订阅行情信息的消息给交易中心,但是如果不做操作的话两台机器都会发送订阅信息,导致交易中心推送2次行情。这里我就是用了一个setnx,根据结果发送订阅消息,然后设置一个过期时间,这就保证了同时只有一台机器发送了订阅消息。

(2) 获取值
get key
如果要获取的键不存在, 则返回nil(空)

(3) 批量设置值
mset key value [key value …]
通过mset命令一次性设置多个键值对

(4) 批量获取值
mget key [key …]
如果有些键不存在, 那么它的值为nil(空) , 结果是按照传入键的顺序返回。
批量操作命令可以有效提高开发效率,因为可以一次性的传输多条get命令在同时返回。而多次个get涉及到多次的网络传输。

(5) 计数
incr key
incr命令用于对值做自增操作, 返回结果分为三种情况:
·值不是整数, 返回错误。
·值是整数, 返回自增后的结果。
·键不存在, 按照值为0自增, 返回结果为1。
例如对一个不存在的键执行incr操作后, 返回结果是1
除了incr命令, Redis提供了decr(自减) 、 incrby(自增指定数字) 、decrby(自减指定数字) 、 incrbyfloat(自增浮点数)。
很多存储系统和编程语言内部使用CAS机制实现计数功能, 会有一定的CPU开销, 但在Redis中完全不存在这个问题, 因为Redis是单线程架构, 任何命令到了Redis服务端都要顺序执行。

内部编码
字符串类型的内部编码有3种:
·int: 8个字节的长整型。
·embstr: 小于等于39个字节的字符串。
·raw: 大于39个字节的字符串。
Redis会根据当前值的类型和长度决定使用哪种内部编码实现。内部优化会在之后详细介绍。

网站文章

  • DIV拖动及DOM2移除事件注意事项

    记录这个没别的意思,之前这段代码貌似没有问题

    2024-01-30 23:09:38
  • 【Linux】常用指令一览

    最近我在学习Linux。我将我了解到的命令列举一下,仅供大家参考

    2024-01-30 23:09:21
  • 【螺钉和螺母问题】【算法分析与设计】假设我们有n个直径各不相同的螺钉以及n个相应的螺母...

    教材原题假设我们有n个直径各不相同的螺钉以及n个相应的螺母。我们一次只能比较一对螺钉和螺母,来判断螺母是大于螺钉、小与螺钉还是正好适合螺钉。然而我们不能拿两个螺母做比较,也不能拿两个螺钉做比较。我们的...

    2024-01-30 23:09:17
  • Mysql-慢日志详解

    Mysql-慢日志详解

    Mysql-慢日志详解 mysql慢日志是什么? 慢查询日志由 long_query_time 执行时间超过几秒钟并且至少 min_examined_row_limit 需要检查行的 SQL 语句组成...

    2024-01-30 23:08:46
  • 攻防世界-MISC新手练习题集(三)

    攻防世界-MISC新手练习题集(三)

    攻防世界-MISC新手练习题集 Erik-Baleog-and-Olaf can_has_stdio? Training-Stegano-1 simple_transfer 2017_Dating_in_Singapore pure_color

    2024-01-30 23:08:38
  • python爬虫学习入门1 urllib 库

    python爬虫 学习学习爬虫因为爬取的一般都是网站,在后期可能会出现需要登陆网站等等的信息, 因此在学爬虫前需要大致的了解一下html 网站的架构,以及前端向后端传递参数时候的大致要求.http ...

    2024-01-30 23:08:31
  • Minikube vs. kind vs. k3s vs k3d vs MicroK8s

    Minikube vs. kind vs. k3s vs k3d vs MicroK8s

    另一个不同之处是,k3s 的设计易于在生产环境中部署,这使其成为在本地环境中为生产级工作负载运行 Kubernetes 的最受欢迎的选择之一,而 k3d 更适合在更小的环境中使用,例如 Raspber...

    2024-01-30 23:08:23
  • 福大计算机专业排名,2019福州大学专业排名

    福州大学是国家“211工程”重点建设高校。在福州大学众多的优秀专业中,称得上最好的专业有7个专业,这些专业是国家级重点学科,也可以说是福州大学的人才聚集地。为了让大家更好的了解这所大学的专业排名,下面...

    2024-01-30 23:07:53
  • Android之简洁天气

    Android之简洁天气

    为什么80%的码农都做不了架构师?>>> ...

    2024-01-30 23:07:46
  • [LeetCode258] Add Digits

    Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.For example:Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has on

    2024-01-30 23:07:38