当前位置: 首页 > wzjs >正文

最早做团购的网站铜陵seo

最早做团购的网站,铜陵seo,wordpress文章换行符,工作压力大怎样缓解焦虑情绪文章目录 string 字符串常用命令设置和获取setgetmget & mset 计数操作incr & incrbydecr & decrbyincrbyfloat 字符串操作appendstrlengetrangesetrange string 字符串 关于 Redis 的字符串,有几点需要注意 Redis 所有的 key 的类型都是字符串类型va…

文章目录

  • string 字符串
  • 常用命令
    • 设置和获取
      • set
      • get
      • mget & mset
    • 计数操作
      • incr & incrby
      • decr & decrby
      • incrbyfloat
    • 字符串操作
      • append
      • strlen
      • getrange
      • setrange

在这里插入图片描述

string 字符串

关于 Redis 的字符串,有几点需要注意

  1. Redis 所有的 key 的类型都是字符串类型
  2. value 的多种数据结构也都是在字符串的基础上构建的,例如列表和集合的元素类型都是字符串类型
  3. 字符串类型的值,可以是字符串,包括一般格式的字符串、JSON、XML格式的字符串;数字,可以是整数、浮点型;也可以是二进制数据流,例如图片、音频、视频
  4. 一个字符串的最大长度不能超过 512MB
  5. Redis 内部存储字符串完全是按照二进制流的形式保存,所以不处理编码问题,客户端传入什么字符集编码,就存储什么

在这里插入图片描述

常用命令

设置和获取

set

将 string 类型的 value 设置到 key 中。如果 key 存在,则覆盖,无论原来的类型是什么。如果之前有设置 TTL(过期时间),也会失效

set key value [expiration EX seconds | PX milliseconds] [NX | XX]

[ ] 中为可选选项

  • EX seconds:使用秒为单位设置 key 的过期时间
  • PX milliseconds:使用毫秒为单位设置 key 的过期时间
  • NX:key 不存在时才进行设置
  • XX:key 存在时才进行设置

如果设置成功,返回 OK;如果由于选项 NX 或 XX 条件不满足,set 不会执行,并返回(nil)

Redis 也支持上述选项和 set 的合并,如 SETEX、PSETEX、SETNX、SETXX

示例:

127.0.0.1:6379> set key1 111 ex 10
OK
127.0.0.1:6379> ttl key1
(integer) 7
127.0.0.1:6379> ttl key1
(integer) 5
127.0.0.1:6379> set key2 hello nx
OK
127.0.0.1:6379> set key2 111 nx
(nil)
127.0.0.1:6379> set key2 111 xx
OK
127.0.0.1:6379> get key2
"111"
127.0.0.1:6379> setnx key3 hi
(integer) 1
127.0.0.1:6379> psetex key4 1000000 hello
OK
127.0.0.1:6379> pttl key4
(integer) 997750

set、setxx、setnx 执行流程如下:

在这里插入图片描述

get

获取 key 对应的 value。如果 key 不存在,返回 nil。如果 value 的数据类型不是 string,则会报错

get key

mget & mset

mget

一次性获取多个 key 的值。如果对应的 key 不存在或者对应的数据类型不是 string,返回 nil
如果 mget 多个 key,其中有不存在的,不会报错,而是返回 nil

mget key [key…]

示例:

127.0.0.1:6379> keys *
1) "key2"
2) "key3"
3) "key4"
127.0.0.1:6379> mget key2 key1 key4
1) "111"
2) (nil)
3) "hello"

mset

一次性设置多个 key

mset key value [key value…]

只要 key value 没问题,则返回都是 OK

示例:

127.0.0.1:6379> mset key1 111 key2
(error) ERR wrong number of arguments for MSET
127.0.0.1:6379> mset key1 111 key2 hello
OK

因为 Redis 是客户端服务器架构,需要进行网络通信,多个 get/set 命令意味着多次网络通信,而 mget/mset 可以将多次 get/set 合并,减少网络通信,性能会更好

PS:但同时也要注意,Redis 执行命令是单线程,不宜单条命令太多复杂,如果 mget/mset 执行过久,会导致其他业务阻塞,无法与 Redis 交互

在这里插入图片描述

计数操作

incr & incrby

incr

将 key 对应的 string 表示的数字加一
如果 key 不存在,则先设置 key 对应的 value 为0,再加一
如果 key 对应的 string 不是一个整数或者范围超过 64 位有符号整型,则报错

incr key

127.0.0.1:6379> set key1 111
OK
127.0.0.1:6379> incr key1
(integer) 112
127.0.0.1:6379> incr key2
(integer) 1

incrby

将 key 对应的 string 表示的数字加上对应的值,值可正可负
如果 key 不存在,则视为 key 对应的 value 为 0
如果 key 对应的 string 不是整型或者范围超过64位有符号整数,则报错

incrby key decrement

127.0.0.1:6379> get key1
"112"
127.0.0.1:6379> incrby key1 100
(integer) 212

decr & decrby

decr

用法同 incr 和 incrby,效果是减去
如果不存在 key,则视为 key 对应的 value 为 0
如果 key 对应的 string 不是整型或者范围超过64位有符号整数,则报错

decr key

127.0.0.1:6379> get key1
"212"
127.0.0.1:6379> decr key1
(integer) 211

decrby

decrby key decrement

127.0.0.1:6379> get key1
"211"
127.0.0.1:6379> decrby key1 100
(integer) 111

incrbyfloat

将 key 对应的 string 表示的浮点数加上对应的值,值可正可负
如果 key 不存在,则视为 key 对应的 value 是 0。
如果 key 对应的不是 string,或者不是⼀个浮点数,则报错。
允许采用科学计数法表示浮点数

incrbyfloat key

示例:

127.0.0.1:6379> set float1 10.50
OK
127.0.0.1:6379> incrbyfloat float1 0.1
"10.6"
127.0.0.1:6379> incrbyfloat float1 -5.0
"5.6"
127.0.0.1:6379> set float2 6.0e3
OK
127.0.0.1:6379> get float2
"6.0e3"
127.0.0.1:6379> incrbyfloat float2 3.0e2
"6300"

PS:很多存储系统和编程语言内部使用 CAS 机制实现计数功能,有一定的 CPU 开销,但因为 Redis 是单线程架构,任何命令在 Redis 服务端都要顺序执行,所以不存在上述开销

字符串操作

append

如果 key 已经存在并且是一个 string,则会将 value 追加到 原有 string 的后面。如果 key 不存在,则效果会等同于 set 命令

append key value

返回值:追加后 string 的长度,单位是字节

示例:

127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379> append key1 world
10
127.0.0.1:6379> get key1
helloworld127.0.0.1:6379> append key2 你好
6
127.0.0.1:6379> append key2 hello
11
127.0.0.1:6379> get key2
你好hello

PS:因为 Redis 存储是不对字符串进行处理的,存入什么编码就是什么编码,此处是在 Xshell 操作客户端,使用的是 UTF-8 编码,汉字占三个字节,所以 “你好” 占 6 个字节

另外,使用 redis-cli 启动客户端,get 是读取字节,对于汉字是不会进行翻译的

127.0.0.1:6379> get key2
"\xe4\xbd\xa0\xe5\xa5\xbdhello"

可以添加参数 redis-cli --raw 启动客户端,get 获取到汉字时就会尝试进行翻译

strlen

获取 key 对应的 string 的长度。当 key 存放的类型不是 string 时,报错

strlen key

返回值:string 的长度,单位是字节;当 key 不存在时,返回 0

示例:

127.0.0.1:6379> set key1 "hello world"
OK
127.0.0.1:6379> strlen key1
(integer) 11
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> strlen key2
(integer) 0

getrange

返回 key 对应的 string 的子串,由 start 和 end 确定(左闭右闭),单位为字节。可以使用负数表示倒数,-1 表示倒数第一个字节,-2 表示倒数第二个,以此类推。超过范围的偏移量会根据 string 的长度调整为正确的值

getrange key start end

返回值:获取到的 string 的子串。如果 key 不存在,返回空串

示例:

127.0.0.1:6379> get key1
hello world
127.0.0.1:6379> get key2
你好
127.0.0.1:6379> getrange key1 0 -1
hello world
127.0.0.1:6379> getrange key1 1 -2
ello worl
127.0.0.1:6379> getrange key2 0 -1
你好
127.0.0.1:6379> getrange key2 1 -2
½ 
127.0.0.1:6379> getrange key3 0 4

因为使用 XShell,编码格式为 UTF-8,汉字占3个字节,getrange 获取 “你好” 的第 1 字节到 第 4 字节,会出现乱码问题

setrange

覆盖字符串的一部分,从指定的偏移量开始,覆盖的范围根据 value 指定

setrange key offset value

返回值:替换后的 string 的长度,单位字节

示例:

127.0.0.1:6379> get key1
"hello world"
127.0.0.1:6379> setrange key1 1 aaa
(integer)11
127.0.0.1:6379> get key1
"haaao world"127.0.0.1:6379> setrange key1 3 aaaaaaaaaaaaaaa
(integer)18
127.0.0.1:6379> get key1
"haaaaaaaaaaaaaaaaa"127.0.0.1:6379> get key3
(nil)
127.0.0.1:6379> setrange key3 1 aaa
(integer) 4
127.0.0.1:6379> get key3
"\x00aaa"

PS:当 key 不存在时,效果相当于 set,如果此时偏移量不为0,则前面用 0x00 填充


以上就是本篇博客的所有内容,感谢你的阅读
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

http://www.dtcms.com/wzjs/230403.html

相关文章:

  • 简单的网站有哪些广告软文范例大全100
  • 微服务网站开发福州百度关键词优化
  • 罗湖网站建设汕头seo外包平台
  • 广州外贸营销型网站建设找一个免费域名的网站
  • ajax做购物网站百度账号管理
  • 母婴用品购物网站制作职业技能培训有哪些
  • 采购供应链管理系统google关键词排名优化
  • 网站tag 怎么实现seo网站页面优化包含
  • 什么网站可以做进出口买卖seo推广软
  • 晋江网站建设公司哪家好今日最新新闻摘抄
  • wordpress全站pjax湖北百度关键词排名软件
  • 比较正规的招聘网站购买模板建站
  • jquery 动画网站google官网注册
  • 有些公司做网站比较好的关键词优化是怎么做的
  • 建立网站的连接结构有哪几种形式广告商对接平台
  • 旅游网站开发的背景百度爱采购推广一个月多少钱
  • tk域名注册网站营销网站定制公司
  • 有做二手厨房设备的网站吗长沙网站推广合作
  • wordpress后台界面修改微信seo是什么意思
  • 济宁网站定制公司网站一年了百度不收录
  • 网站jianshe百度手机助手app安卓版官方下载
  • 公司网站怎么发布文章友链购买有效果吗
  • 如何用zblog做棋牌网站网络推广有哪些
  • 网络网站建设办公友情链接地址
  • 徐州建网站产品网络推广的方法有哪些
  • 专业的企业智能建站比较好网店代运营骗局流程
  • 男女做爰免费网站网站建设制作公司
  • 电商 网站 降低 跳出率 措施 效果建网站用什么软件
  • ps网站如何做烫金的文字做百度推广效果怎么样
  • 一个网站主机多少钱个人如何在百度做广告