Redis系列二、redis的五种数据结构和相关指令之String

15 篇文章 18 订阅

redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string、hash、list、set、sorted set。本节中将介绍Redis支持的主要数据结构中的string,以及相关的常用Redis命令。

redis的五种数据结构和相关指令之String

字符串string

redis的字符串不限存储格式,实际上可以是字符串(包括XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过512MB。

a、基本命令

  • SET:为一个key设置value,可以配合EX/PX参数指定key的有效期,通过NX/XX参数针对key是否存在的情况进行区别操作,时间复杂度O(1)
  • GET:获取某个key对应的value,时间复杂度O(1)
  • GETSET:为一个key设置value,并返回该key的原value,时间复杂度O(1)
  • MSET:为多个key设置value,时间复杂度O(N)
  • MSETNX:同MSET,如果指定的key中有任意一个已存在,则不进行任何操作,时间复杂度O(N)
  • MGET:获取多个key对应的value,时间复杂度O(N)

eg:

set age 23 ex 10 //10秒后过期  px 10000 毫秒过期
setnx name test  //不存在键name时,返回1设置成功;存在的话失败0
set age 25 xx    //存在键age时,返回1成功
get age //获值命令:存在则返回value, 不存在返回nil
mset country china city beijing 	//批量设值:
mget country city address //批量获取:返回china  beigjin, address为nil

补充说明
带“m”的批量指令能减少指令的网络请求时间,提高效率。例如若没有mget命令,则要执行n次get命令
在这里插入图片描述

使用mget=1次网络请求+redis内部n次查询

在这里插入图片描述

b、数值操作

当string的值为数值的时候就可以进行一些针对数值的增减操作:

incr age //必须为整数自加1,非整数返回错误,无age键从0自增返回1
decr age //整数age减1
incrby age 2 //整数age+2
decrby age 2//整数age -2
incrbyfloat score 1.1 //浮点型score+1.1

c、普通字符串操作

追加指令:

set name hello; append name world //追加后成helloworld

字符串长度:

set hello “世界”;strlen hello//结果6,每个中文占3个字节

截取字符串:

set name helloworld ; getrange name 2 4//返回 llo

d、key的使用技巧

  • 不要使用过长的Key。例如使用一个1024字节的key就不是一个好主意,不仅会消耗更多的内存,还会导致查找的效率降低
  • Key短到缺失了可读性也是不好的,例如”u1000flw”比起”user:1000:followers”来说,节省了寥寥的存储空间,却引发了可读性和可维护性上的麻烦
  • 最好使用统一的规范来设计Key,比如”object-type: id:attr”,以这一规范设计出的Key可能是”user:1000″或”comment: 1234:reply-to”
  • Redis允许的最大Key长度是512MB(对Value的长度限制也是512MB)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值