【Redis】基础用法

一、Redis介绍

Redis是一种高性能的NoSQL数据库,也被称为远程字典服务器,它使用ANSI C编写,开源,支持网络,基于内存运行且可选持久化的键值对存储系统。Redis的出现是为了应对Web应用在高访问量和并发量下关系型数据库的性能瓶颈问题。它的性能高效,基于内存的运行方式使其读写速度快,能够支撑PB级别的数据和百万级的流量。作为一个键值对存储系统,Redis支持多种数据结构,包括String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Sorted Set(有序集合)等。相比于其他数据库类型,Redis具有以下显著特点:它采用C/S通讯模型和单进程单线程模型,确保操作的原子性。Redis的数据存储主要依赖于字典(散列表),这使得其在进行CURD操作时效率非常高。此外,Redis还支持丰富的数据类型和操作命令,例如对于每种数据类型都提供了丰富的操作命令如GET/MGET、SET/SETEX/MSET/MSETNX、INCR/DECR、GETSET和DEL等。

二、基本操作

1.key的操作命令

命令 描述 用法
DEL 删除给定的一个或多个Key DEL key [key...]
EXISTS 检查给定Key是否存在 EXISTS key
EXPIRE 为给定Key设置生存时间,对一个已经指定生存时间的Key设置执行EXPIRE, 新的值会代替旧的值 EXPIRE key seconds
KEYS 查找所有符合给定模式pattern的Key,例如:(1)KEYS匹配所有key(2)KEYSh? llo匹配hello、hallo、hxllo等(3)KEYS hllo匹配hlllo、heeeello等(4)KEYS h[ae]lllO匹配hello和hallo KEYS pattern
MIGRATE (1)原子性地将Key从当前实例传送到目标实例指定的数据库上(2)原数据库Key删除, 新数据库Key增加(3)阻塞进行迁移的两个实例,直到迁移成功、迁移失败、 等待超时三个之一发生 MIGRATE host port key destination-db timeout [COPY][REPLACE]
MOVE 将当前数据库的Key移动到给定数据中,执行成功的条件为当前数据库有Key, 而给定数据库没有Key MOVE key db
PERSIST 移除给定Key的生存时间,将Key变为持久数据 PERSIST key
RANDOMKEY 从当前数据库随机返回且不删除一个Key, RANDOMKEY
RENAME 将Key的键名修改为新键名(3)新键名已存在,RENAME将覆盖旧值。 RENAME key newkey
TYPE 返回Key锁存储的值的类型。 TYPE key.

2.字符串的操作命令 

命令 描述 用法
SET (1)将字符串值Value关联到Key(2)Key已关联则覆盖,无视类型(3) 原本Key带有生存时间TTL,那么TTL被清除 SET key value[EX seconds][PX XX]
GET (1)返回Key关联的字符串值 (2) Key不存在返回nil (3)Key存储的不是字符串,返回错误, 因为GET只用于处理字符串 GET key
MSET (1)同时设置一个或多个key-Value键值对 (2)某个给定Key已经存在,那么MSET新值会覆盖旧值 (3)如果上面的覆盖不是希望的,那么使用MSETNX命令,所有Key都不存在才会进行覆盖(4) MSET是一个原子性操作,所有Key都会在同一时间被设置,不会存在有些更新有些没更新的情况 MSET key value [key value ... ]
MGET (1)返回一个或多个给定Key对应的Value (2)某个Key不存在那么这个Key返回nil MGET key [key ...]
SETEX (1)将Value关联到Key (2) 设置Key生存时间为seconds,单位为秒(3) 如果Key对应的Value已经存在,则覆盖旧值(4)SET也可以设置失效时间, 但是不同在于SETNX是一个原子操作,即关联值与设置生存时间同一时间完成 SETEX key seconds value
SETNX (1)当Key不存在时将Key的值设为Value (2)若给定的Key已存在,SEXNX不做任何动作 SETNX key value
INCR (1) Key中存储的数字值+1,返回增加之后的值 (2) Key不存在, 那么Key的值被初始化为0再执行INCR (3)如果值包含错误类型或者字符串不能被表示为数字, 那么返回错误(4)值限制在64位有符号数字表示之内 INCR key
DECR (1) Key中存储的数字值-1 (2)其余同INCR DECR key
INCRBY (1)将key所存储的值加上增量返回增加之后的值(2)其余同INCR INCRBY key increment
DECRBY (1)将key所存储的值减去减量decrement(2)其余同INCR DECRBY key decrement
#设置key
#set命令 设置key和value  设置key位name,value为"hello"
set name "hello"
#mset命令  一次性创建多个 key1为name1 value为"hello1" key2为name2 value为"hello2"
mset name1 "hello1" name2 "hello2"

#查找key
#keys命令  name为key值
keys name    
#exist命令,用于检查一个或多个key是否存在,返回结果为1表示存在,为0表示不存在。
exists name

#删除Key  
del name
#flushall或flushdb
flushall

#设置key过期时间
#exprire命令,此命令为key设置过期时间,单位为秒。
expire name 60
#此命令返回key剩余的生存时间,单位也是秒。
ttl name
#设置生存时间为永久
persist name

#查看Key类型
#type 此命令返回key所存储值的数据类型
type name

#Key的其他操作
#rename用于重命名key
rename name name11
#移动到指定数据库
move name 2

#select切换数据库
select 2


#Key中存储的数字值+1
incr id
#Key中存储的数字值-1
decr id
#将key所存储的值加上增量返回增加之后的值
incrby id 5
#将key所存储的值减去减量decrement
decrby id 5

3.哈希数据的命令操作

命令 描述 用法
HSET (1)将哈希表Key中的域Field的值设为Value (2) Key不存在,一个新的Hash表被创建 (3) Field已经存在,旧的值被覆盖 HSET key field value
HGET 返回哈希表Key中给定域Field的值 HGET key field
HDEL 删除哈希表Key中的一个或多个指定域 (2)不存在的域将被忽略 HDEL key filed [field ...]
HEXISTS 查看哈希表Key中,给定域Field是否存在,存在返回1,不存在返回0 HEXISTS key field
HGETALL 返回哈希表Key中,所有的域和值 HGETALL key
HINCRBY 为哈希表Key中的域Field加上增量Increment (2)其余同INCR命令 HINCRBY key filed increment
HKEYS 返回哈希表Key中的所有域 HKEYS key
HLEN 返回哈希表Key中域的数量 HLEN key
HMGET (1)返回哈希表Key中,一个或多个给定域的值 (2)如果给定的域不存在于哈希表, 那么返回一个nil值 HMGET key field [field ...]
HMSET (1)将多个Field-Value对设置到哈希表Key中 (2)会覆盖哈希表中已存在的域 (3) Key不存在, 那么一个空哈希表会被创建并执行HMSET操作 [field value ...] HMSET key field value [field value ...]
HVALS 返回哈希表Key中所有的域和值 HVALS key
#HSET命令,此命令用于设置哈希表中指定字段的值
hset myhash name 'zs'
#回哈希表Key中给定域的值
hget myhash name
#删除哈希表Key中的一个或多个指定域
hdel myhash name

#查看哈希表Key中,给定域是否存在,存在返回1,不存在返回0
hexists myhash name

#返回哈希表Key中,所有的域和值
hgetall myhash

#为哈希表Key中的域加上增量Increment
hincrby myhash id 1

#返回哈希表Key中的所有域
hkeys myhash

#返回哈希表Key中域的数量
hlen myhash

#返回哈希表Key中,一个或多个给定域的值
hmget myhash  id name

#将多个设置到哈希表Key中 
hmset  myhash score 1 sex 'man'

#返回哈希表Key中所有的域和值
hvals myhash

4.列表类型常用命令 

命令 描述 用法
LPUSH (1)将一个或多个值Value插入到列表Key的表头(2)如果有多个Value值,那么各个Value值按从左到右的顺序依次插入表头(3)Key不存在,一个空列表会被创建并执行LPUSH操作(4)Key存在但不是列表类型,返回错误 LPUSH key value [value ...]
LPUSHX (1)将值Value插入到列表Key的表头,当且仅当Key存在且为一个列表(2)当Key不存在时,LPUSHX命令什么都不做 LPUSHX key value
LPOP (1)移除并返回列表Key的头元素 LPOP key
LRANGE (1)返回列表Key中指定区间内的元素,区间以偏移量Start和Stop指定(2)Start和Stop都以0为底开始计数(3)可使用负数下标,-1表示列表最后一个元素,-2表示列表倒数第二个元素,以此类推(4)Start大于列表最大下标,返回空列表(5)Stop大于列表最大下标,Stop=列表最大下标 LRANGE key start stop
LREM (1)根据Count的值,移除表中与Value相等的元素(2)Count>0表示从头到尾搜索,移除与Value相等的元素,数量为Count(3)Count<0表示从从尾到头搜索,移除与Value相等的元素,数量为Count(4)Count=0表示移除表中所有与Value相等的元素 LREM key count value
LSET (1)将列表Key下标为Index的元素设为Value(2)Index参数超出范围,或对一个空列表进行LSET时,返回错误 LSET key index value
LINDEX (1)返回列表Key中,下标为lndex的元素 LINDEX key index
LINSERT (1)将值Value插入到列表Key中,位于Pivot前面或者后面(2)Pivot不存在于列表Key时,不执行任何操作(3)Key不存在,不执行任何操作 LINSERT key pivot BEFORE\value
LLEN (1)返回列表Key的长度(2)Key不存在,返回0 LLEN key
LTRIM (1)对一个列表进行修剪,让列表只返回指定区间内的元素,不存在指定区间内的都将被移除 LTRIM key start stop
RPOP (1)移除并返回列表Key的尾元素 RPOP key
RPOPLPUSH (在一个原子时间内,执行两个动作:(1)将列表Source中最后一个元素弹出并返回给客户端(2)将Source弹出的元素插入到列表Destination,作为Destination列表的头元素 RPOPLPUSH source destination
RPUSH (1)将一个或多个值Value插入到列表Key的表尾 RPUSH key value [value ...]
RPUSHX (1)将Value插入到列表Key的表尾,当且仅当Key存在并且是一个列表(2)Key不存在,RPUSHX什么都不做 RPUSHX key value
#lpush将一个或多个值Value插入到列表Key的表头
lpush mylist 0 1
#lpushx将值Value插入到列表Key的表头,当且仅当Key存在且为一个列表
lpushx mylist 
#lrange返回列表Key中指定区间内的元素,区间以偏移量Start和Stop指定
lrange my_list 0 6
#lpop移除并返回列表Key的头元素
lpop mylist

#lrem根据Count的值,移除表中与Value相等的元素 移除第一个列表,值为222
lrem my_list 1 222
#lset根据index下表设置value值    将下标为0的列表值设置为ww
lset my_list 0 'ww'

#返回列表Key中,下标为lndex的元素 ,返回index为3的元素
lindex my_list 3

#linsert 将值Value插入到列表Key中,位于zs前面或者后面
linsert my_list before zs 'hh'
linsert my_list after zs 'hh'

#返回列表Key的长度,Key不存在,返回0
llen my_list

#ltrim对一个列表进行修剪,让列表只返回指定区间内的元素,不存在指定区间内的都将被移除,修剪完只剩下第3和第4个元素
ltrim my_list 2 3
#移除并返回列表Key的尾元素
rpop my_list

#rpopsh将一个或多个值Value插入到列表Key的表尾
rpush my_list last

#rpushx将Value插入到列表Key的表尾,当且仅当Key存在并且是一个列表
rpushx my_list last

5.其他常用命令

命令 描述 用法
SADD (1)将一个或多个member元素加入到key中,已存在在集合的member将被忽略(2) 假如key不存在,则只创建一个只包含member元素做成员的集合(3) 当key不是集合类型时,将返回一个错误 SADD key number [member...]
SCARD (1)返回key对应的集合中的元素数量 SCARD key
SREM (1)移除集合key中的一个或多个member元素,不存在的member将被忽略 SREM key member [member...]
SMEMSBERS (1)返回集合key中的所有成员(2)不存在的key被视为空集 SMEMSBERS key
ZADD (1)将一个或多个member元素及其score值加入有序集key中(2) 如果member已经是有序集的成员, 那么更新member对应的score并重新插入member保证member正在正确的位置上(3) score可以是整数值或双精度浮点数 ZADD key score member[[score member][score member]...[]
ZCARD (1)返回有序集key的元素个数 ZCARD key
ZCOUNT (1)返回有序集key中,score值>=min且<=max的成员的数量 ZCOUNT key min max
ZRANGE (1)返回有序集key中指定区间内的成员,成员位置按score从小到大排序(2) 具有相同score值的成员按字典序排列(3)需要成员按score从大到小排列, 使用ZREVRANGE命令(4)下标参数start和stop都以0为底, 也可以用负数,-1表示最后一个成员,-2表示倒数第二个成员(5) 可通过WITHSCORES选项让成员和它的score值一并返回 ZRANGE key start stop [WITHSCORES]
ZRANK (1)返回有序集key中成员member的排名,有序集成员按score值从小到大排列(2) 排名以0为底,即score最小的成员排名为0(3) ZREVRRANK命令可将成员按score值从大到小排名 ZRANK key number
ZREM (1)移除有序集key中的一个或多个成员,不存在的成员将被忽略(2) 当key存在但不是有序集时,返回错误 ZREM key member [member ...]
SELECT (1)切换到指定数据库,数据库索引index用数字指定,以0作为起始索引值(2) 默认使用0号数据库 SELECT index
DBSIZE (1)返回当前数据库的Key的数量 DBSIZE
SHUTDOWN (1)停止所有客户端(2)如果至少有一个保存点在等待,执行SAVE命令(3) 如果AOF选项被打开,更新AOF文件(4)关闭Redis服务器 SHUTDOWN [SAVE\] NOSAVE]
FLUSHDB (1)清空当前数据库中的所有Key FLUSHDB
FLUSHALL (1)清空整个Redis服务器的数据(删除所有数据库的所有Key) FLUSHALL

每篇一言:夜深忽梦少年事,唯梦闲人不梦君。

相关推荐

  1. Redis基础

    2024-07-19 05:26:03       19 阅读
  2. redis特殊数据类型-Hyperloglog(基数统计)

    2024-07-19 05:26:03       33 阅读
  3. golang基础

    2024-07-19 05:26:03       17 阅读
  4. 【HTML】基础

    2024-07-19 05:26:03       21 阅读
  5. redis -String类型

    2024-07-19 05:26:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 05:26:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 05:26:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 05:26:03       58 阅读
  4. Python语言-面向对象

    2024-07-19 05:26:03       69 阅读

热门阅读

  1. 7.18文章分享

    2024-07-19 05:26:03       23 阅读
  2. 交易积累-OSC

    2024-07-19 05:26:03       20 阅读
  3. 【16】时间单位换算

    2024-07-19 05:26:03       18 阅读
  4. 10 - FFmpeg - 重采样 - SoftwareResampleExample

    2024-07-19 05:26:03       17 阅读
  5. npm install时报错 reason: connect ETIMEDOUT

    2024-07-19 05:26:03       16 阅读
  6. npm相关指令

    2024-07-19 05:26:03       23 阅读
  7. 【Unity】RPG2D龙城纷争(十四)存档系统

    2024-07-19 05:26:03       19 阅读
  8. 点的距离(C++)

    2024-07-19 05:26:03       19 阅读
  9. itextpdf 使用demo

    2024-07-19 05:26:03       26 阅读
  10. chatglm2-6b-prompt尝试

    2024-07-19 05:26:03       21 阅读
  11. IKM 外企常用

    2024-07-19 05:26:03       21 阅读
  12. Linux源码阅读笔记13-进程通信组件上

    2024-07-19 05:26:03       20 阅读