Redis基本类型之String类型


Redis基本类型之String类型

一、简介

  • String类型,也就是字符串类型,是Redis中最简单存储类型
  • 其中value是字符串,不同根据字符串的格式不同,又可以分为3类:
    • String:普通字符串
    • int:整数类型,可以做自增、自减操作
    • float:浮点类型,可以做自增、自减操作
  • 不管是哪个格式,底层都是自己数组形式存储,只不过是编码方式不同,字符串类型的最大空间不能超过512m。

二、String类型的常见命令

命令作用
set添加或者修改已经存在的一个String类型的键值对
get根据key获取String类型的value
mset批量添加多个String类型的键值对
mget根据多个key获取多个String类型的value
incr让一个整数的key自增1
incrby让一个整数的key自增并指定步长,例如:incrby num 2 让num值自增2
incrbyfloat让一个浮点类型的数字自增并指定步长
setnx添加一个String类型的键值对,前提是这个key不存在,否则不执行
setex添加一个String类型的键值对,并且指定有效期

三、操作案例

1、set、get(设置和获取数据)

  • set:添加或者修改已经存在的一个String类型的键值对
  • get:根据key获取String类型的value
192.168.8.137:6379> set name Rose
OK
192.168.8.137:6379> get name
"Rose"
192.168.8.137:6379> set name Jack
OK
192.168.8.137:6379> get name
"Jack"

2、mset、mget(批量设置和获取数据)

  • mset:批量添加多个String类型的键值对
  • mset:根据多个key获取多个String类型的value
192.168.8.137:6379> MSET k1 v1 k2 v2 k3 v3
OK
192.168.8.137:6379> MGET name age k1 k2 k3
1) "Jack"
2) "18"
3) "v1"
4) "v2"
5) "v3"

3、incr(设置整数自增1)

  • incr:让一个整数的key自增1
192.168.246.128:6379> set age 10
OK
192.168.246.128:6379> get age
"10"
192.168.246.128:6379> incr age
(integer) 11
192.168.246.128:6379> get age
"11"

4、incrby(设置整数自增)

  • incrby:让一个整数的key自增并指定步长,可正可负
192.168.8.137:6379> INCRBY age 2
(integer) 22
192.168.8.137:6379> INCRBY age 8
(integer) 30
192.168.8.137:6379> get age
"30"
192.168.8.137:6379> INCRBY age -8
(integer) 22
192.168.8.137:6379> get age
"22"

5、incrbyfloat(设置浮点数自增)

  • incrbyfloat:让一个浮点类型的数字自增并指定步长
192.168.8.137:6379> set score 10.1
OK
192.168.8.137:6379> INCRBYFLOAT score 0.5
"10.6"
192.168.8.137:6379> INCRBYFLOAT score 0.5
"11.1"
192.168.8.137:6379> INCRBYFLOAT score 0.5
"11.6"

6、setnx (添加键值对)

  • setnx:添加一个String类型的键值对,前提是这个key不存在,否则不执行,0已经存在无法执行
192.168.8.137:6379> help setnx

  SETNX key value
  summary: Set the value of a key, only if the key does not exist
  since: 1.0.0
  group: string

192.168.8.137:6379> setnx name lisi
(integer) 0
192.168.8.137:6379> get name
"Jack"
192.168.8.137:6379> SETNX name2 lisi
(integer) 1
192.168.8.137:6379> get name2
"lisi"

7、setex(添加键值对且指定有效期)

  • setex:添加一个String类型的键值对,并且指定有效期,-2失效
192.168.8.137:6379> help setex

  SETEX key seconds value
  summary: Set the value and expiration of a key
  since: 2.0.0
  group: string
192.168.8.137:6379> setex name 10 jack
OK
192.168.8.137:6379> ttl name
(integer) 9
192.168.8.137:6379> ttl name
(integer) 5
192.168.8.137:6379> ttl name
(integer) -2

# 已经存在的键值对设置有效期
192.168.8.137:6379> set name jack ex 10
OK
192.168.8.137:6379> ttl name
(integer) 8
192.168.8.137:6379> ttl name
(integer) 6
192.168.8.137:6379> ttl name
(integer) 1
192.168.8.137:6379> ttl name
(integer) -2

四、key的层级格式

1、key的结构

  • Redis的key允许有多个单词形成层级机构,多个单词之间用 ’ : ’ 隔开
  • 这个格式并非固定,也可以根据自己的需求来删除或添加词条。

2、Redis的key的格式

  • [项目名] : [业务名] : [类型] : [id]

3、Redis的Value的格式

  • {“key1”:value1, “key2”:“value2”, “key3”:value3}

4、问题案例

4.1、问题

Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?
需要存储用户、商品信息到Redis,有一个用户id是1,有个商品id恰好也是1

4.2、设置Key和Value
  • Key:我们的项目名称叫 sgz,有user和product两种不同类型的数据,我们可以这样定义Key
user相关的keyproduct相关的key
sgz:user:1sgz:product:1
  • Value:如果Value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储
KEYVALUE
sgz:user:1{“id” : 1, “name” : “Jack”, “age” : 22}
sgz:product:1{“id” : 1, “name” : “小米11”, “price” : 4999}
4.3、操作案例
192.168.246.128:6379> set sgz:user:1 '{"id":1, "name":"Jack", "age":22}'
OK
192.168.246.128:6379> set sgz:user:2 '{"id":2,"name":"MaiKe","age":20}'
OK
192.168.246.128:6379>  set sgz:product:1 '{"id":1,"name":"小米11","price":4999}'
OK
192.168.246.128:6379> set sgz:product:2 '{"id":2,"name":"荣耀6","price":2999}'
OK

4.4、可视化工具查看

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值