Redis基本类型之String类型

文章目录

  • Redis基本类型之String类型
    • 一、简介
    • 二、String类型的常见命令
    • 三、操作案例
      • 1、set、get(设置和获取数据)
      • 2、mset、mget(批量设置和获取数据)
      • 3、incr(设置整数自增1)
      • 4、incrby(设置整数自增)
      • 5、incrbyfloat(设置浮点数自增)
      • 6、setnx (添加键值对)
      • 7、setex(添加键值对且指定有效期)
    • 四、key的层级格式
      • 1、key的结构
      • 2、Redis的key的格式
      • 3、Redis的Value的格式
      • 4、问题案例
        • 4.1、问题
        • 4.2、设置Key和Value
        • 4.3、操作案例
        • 4.4、可视化工具查看


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相关的key product相关的key
sgz:user:1 sgz:product:1
  • Value:如果Value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储
KEY VALUE
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、可视化工具查看

Redis基本类型之String类型_第1张图片

你可能感兴趣的:(Redis,redis,数据库,缓存)