【Redis】通用命令 1

目录

  • [1. get/set](#1. get/set)
  • [2. keys](#2. keys)
  • [3. exists](#3. exists)
  • [4. del](#4. del)
  • [5. expire](#5. expire)
  • [6. ttl](#6. ttl)
  • [7. type](#7. type)
  • [8. 计数命令](#8. 计数命令)
    • [8.1 INCR](#8.1 INCR)
    • [8.2 INCRBY](#8.2 INCRBY)
    • [8.3 DECR](#8.3 DECR)
    • [8.4 DECRBY](#8.4 DECRBY)
    • [8.5 INCRBYFLOAT](#8.5 INCRBYFLOAT)
  • 9.append
  • [10. getrange](#10. getrange)
  • [11. setrange](#11. setrange)
  • [12. strlen](#12. strlen)

Redis是按照键值对的方式来存储数据的 <key,value>
key固定就是字符串, value实际上会有很多类型------字符串、哈希表、列表、集合、有序集合

1. get/set

get:根据 key 来取 value
set:把 keyvalue 存储进去

语法:
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
GET key

powershell 复制代码
127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> set hbllo 1
OK
127.0.0.1:6379> set heeeeeello 1
OK
127.0.0.1:6379> get hello
"1"
127.0.0.1:6379> get llo
(nil)   #key不存在返回nil,也就是null
  • NX:如果 key 不存在,才设置;key存在,则不设置(返回nil)
  • XX:如果 key 存在,才设置; key 不存在,则不设置(返回nil)
  • 如果 key 不存在,创建心得 键值对
  • 如果 key 存在,则让新的 value 覆盖旧的value 可能会改变原来的数据类型 。原来这个 key ttl(生存时间)也会失效
  • 对于 GET 来说,只支持字符串类型的value,如果value是其他类型,使用get 获取就会出错
powershell 复制代码
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> ttl key1
(integer) 4
127.0.0.1:6379> ttl key1
(integer) 3
127.0.0.1:6379> set key2 222 nx
OK
127.0.0.1:6379> set key1 333 xx
(nil)
127.0.0.1:6379> get key1
(nil)

MSET:一次性设置多个 key 的值

语法:MSET key value [key value ...]

powershell 复制代码
127.0.0.1:6379> mset key1 111 key2 222 key3 333
OK

MGET:一次性取出多个key对应的value值

语法:MGET key [key...]

powershell 复制代码
127.0.0.1:6379> mget key1 key2 key3
1) "111"
2) "222"
3) "333"

SETNX:不存在才能设置,存在则设置失败

SETEX:设置过期时间,单位是秒

PSETEX:设置过期时间,单位是毫秒

powershell 复制代码
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> setnx key1 111
(integer) 1
127.0.0.1:6379> get key1
"111"
127.0.0.1:6379> setnx key1 222
(integer) 0
127.0.0.1:6379> get key1
"111"
127.0.0.1:6379> setex key2 10 222
OK
127.0.0.1:6379> ttl key2
(integer) 6
127.0.0.1:6379> get key2
"222"
127.0.0.1:6379> get key2
(nil)
127.0.0.1:6379> psetex key3 10000 333
OK
127.0.0.1:6379> ttl key3
(integer) 8
127.0.0.1:6379> ttl key3
(integer) 5
127.0.0.1:6379> get key3
(nil)

2. keys

keys:用来查询当前服务器上匹配的key

通过一些特殊符号(通配符)来描述 key 的模样,匹配上述模样的 key 就能被查询出来

  • 匹配任意一个字符
  • * 匹配 0 个/ 多个任意字符
  • [abcde] 只能匹配到 a b c d e,别的不行。相当于给出固定的选项了
  • [^e] 排除e,只有e匹配不了,其他的都能匹配
  • [a-b] 匹配 a-b 这个范围内的字符,包含两侧边界
powershell 复制代码
127.0.0.1:6379> keys *
1) "hello"
2) "hllo"
3) "hbllo"
4) "hallo"
5) "heeeeeello"
127.0.0.1:6379> keys h?llo
1) "hello"
2) "hbllo"
3) "hallo"
127.0.0.1:6379> keys h*llo
1) "hello"
2) "hllo"
3) "hbllo"
4) "hallo"
5) "heeeeeello"
127.0.0.1:6379> keys h[abe]llo
1) "hello"
2) "hbllo"
3) "hallo"
127.0.0.1:6379> keys h[^ae]llo
1) "hbllo"
127.0.0.1:6379> keys h[a-e]llo
1) "hello"
2) "hbllo"
3) "hallo"

keys命令的时间复杂度 O(N)

3. exists

exists:判定 key 是否存在

返回值:key 存在的个数(针对多个key来说,是非常有用的)

时间复杂度O(1)

powershell 复制代码
127.0.0.1:6379> exists hallo hello word
(integer) 2 #只有2个key 值存在,其中word不存在
127.0.0.1:6379> exists hello
(integer) 1
127.0.0.1:6379> exists hallo
(integer) 1

4. del

del(delete):删除指定的 key

返回值:删除掉的 key 的个数

时间复杂度O(1)

powershell 复制代码
127.0.0.1:6379> del hllo
(integer) 1
127.0.0.1:6379> del hallo hbllo aaa
(integer) 2

5. expire

expire:给指定的 key 设置过期时间,设置的单位是秒。可以 存活时间超出这个指定的值,就会被自动删除

语法:expire key seconds

此处的设定过期时间,必须是针对已经存在的 key 设置,设置成功返回 1 ,设置失败返回 0

时间复杂度O(1)

powershell 复制代码
127.0.0.1:6379> set hello 111
OK
127.0.0.1:6379> expire hello 10
(integer) 1
127.0.0.1:6379> get hello
"111"
127.0.0.1:6379> get hello
"111"
127.0.0.1:6379> get hello
(nil)

6. ttl

ttl:查看当前 key 的过期时间还剩多少

返回值:剩余过期时间。-1 表示没有关联过期时间,-2 表示key 不存在

语法:ttl key

powershell 复制代码
127.0.0.1:6379> set hello 111
OK
127.0.0.1:6379> expire hello 10
(integer) 1
127.0.0.1:6379> ttl hello
(integer) 7
127.0.0.1:6379> ttl hello
(integer) 6
127.0.0.1:6379> ttl hello
(integer) 4
127.0.0.1:6379> ttl hello
(integer) 3
127.0.0.1:6379> ttl hello
(integer) -2
127.0.0.1:6379> get hello
(nil)

7. type

type:查看 key 对应的 value 的类型

powershell 复制代码
127.0.0.1:6379> set key1 111
OK
127.0.0.1:6379> type key1
string
127.0.0.1:6379> lpush key2 111 222 333
(integer) 3
127.0.0.1:6379> type key2
list
127.0.0.1:6379> sadd key3 111 222 333
(integer) 3
127.0.0.1:6379> type key3
set
127.0.0.1:6379> hset key4 field1 value1
(integer) 1
127.0.0.1:6379> type key4
hash

8. 计数命令

8.1 INCR

将 key 对应的 string 表示的数字加⼀ 。如果 key 不存在,则视为 key 对应的 value 是 0。如果 key 对

应的 string 不是⼀个整型 或者范围超过了 64 位有符号整型,则报错

语法:INCR key

powershell 复制代码
127.0.0.1:6379> set key 10
OK
127.0.0.1:6379> incr key
(integer) 11
127.0.0.1:6379> incr key1
(integer) 1
127.0.0.1:6379> set key2 hello
OK
127.0.0.1:6379> incr key2
(error) ERR value is not an integer or out of range
127.0.0.1:6379> set key3 22222222222222222222222222222222222222222222222222222222222222
OK
127.0.0.1:6379> incr key3
(error) ERR value is not an integer or out of range

8.2 INCRBY

将 key 对应的 string 表示的数字加上对应的值 。如果 key 不存在,则视为 key 对应的 value 是 0。如

果 key 对应的 string 不是⼀个整型 或者范围超过了 64 位有符号整型,则报错

语法:INCRBY key decrement

powershell 复制代码
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> incrby key1 10
(integer) 10
127.0.0.1:6379> incrby key1 -1
(integer) 9
127.0.0.1:6379> set key2 hello
OK
127.0.0.1:6379> incrby key2 20
(error) ERR value is not an integer or out of range

8.3 DECR

将 key 对应的 string 表示的数字减⼀。如果 key 不存在,则视为 key 对应的 value 是 0。如果 key 对

应的 string 不是⼀个整型或者范围超过了 64 位有符号整型,则报错

语法:decr key

powershell 复制代码
127.0.0.1:6379> set key 10
OK
127.0.0.1:6379> decr key
(integer) 9
127.0.0.1:6379> decr key1
(integer) -1

8.4 DECRBY

将 key 对应的 string 表示的数字减去对应的值。如果 key 不存在,则视为 key 对应的 value 是 0。如

果 key 对应的 string 不是⼀个整型或者范围超过了 64 位有符号整型,则报错

语法:DECRBY key decrement

powershell 复制代码
127.0.0.1:6379> set key 10
OK
127.0.0.1:6379> decrby key 5
(integer) 5
127.0.0.1:6379> decrby key1 10
(integer) -10

8.5 INCRBYFLOAT

将 key 对应的 string 表示的浮点数加上对应的值。如果对应的值是负数,则视为减去对应的值。如果

key 不存在,则视为 key 对应的 value 是 0。如果 key 对应的不是 string,或者不是⼀个浮点数,则报

错。允许采⽤科学计数法表示浮点数

语法:INCRBYFLOAT key increment

powershell 复制代码
127.0.0.1:6379> set key 10.5
OK
127.0.0.1:6379> incrbyfloat key 0.5
"11"

9.append

如果 key 已经存在并且是⼀个 string,命令会将 value 追加到原有 string 的后边。如果 key 不存在,

则效果等同于 SET 命令

返回值:追加完成之后 string 的长度

语法:APPEND KEY VALUE

powershell 复制代码
127.0.0.1:6379> set key hello
OK
127.0.0.1:6379> append key  world
(integer) 10
127.0.0.1:6379> get key
"helloworld"

10. getrange

返回 key 对应的 string 的子串,由 start 和 end 确定(左闭右闭)。可以使用负数表示倒数。-1 代表

倒数第一个字符,-2 代表倒数第二个,其他的与此类似。超过范围的偏移量会根据 string 的长度调整

成正确的值

返回值:string 类型的子串

语法: GETRANGE key start end

powershell 复制代码
127.0.0.1:6379> set key helloworld
OK
127.0.0.1:6379> getrange key 0 -1
helloworld
127.0.0.1:6379> GETRANGE key 1 -2
elloworl

11. setrange

覆盖字符串的⼀部分,从指定的偏移开始。

返回值:替换后的 string 的长度

语法:SETRANGE key offset value

powershell 复制代码
127.0.0.1:6379> set key helloworld
OK
127.0.0.1:6379> setrange key 1 aaa
10
127.0.0.1:6379> get key
haaaoworld
127.0.0.1:6379> setrange key 1 bbbb
10
127.0.0.1:6379> get key
hbbbbworld
127.0.0.1:6379> setrange key 1 cccccccccccccccccccccccccccccccccc
35
127.0.0.1:6379> get key
hcccccccccccccccccccccccccccccccccc

12. strlen

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

返回值:string 的长度。或者当 key 不存在时,返回 0。

语法:STRLEN key

powershell 复制代码
127.0.0.1:6379> set key helloworld
OK
127.0.0.1:6379> strlen key
10
127.0.0.1:6379> get key
helloworld
127.0.0.1:6379> set key1 你好
OK
127.0.0.1:6379> strlen key1
6
127.0.0.1:6379> get key1
你好
相关推荐
小陈工1 天前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
科技小花1 天前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸1 天前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain1 天前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希1 天前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神1 天前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员1 天前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java1 天前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿1 天前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴1 天前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存