> 文档中心 > Redis指定配置文件启动、数据库相关指令以及Redis操作String类型、List类型

Redis指定配置文件启动、数据库相关指令以及Redis操作String类型、List类型


9. Redis数据库相关指令

9.0 redis细节

# redis细节1. redis启动服务的细节注意: 直接使用 ./redis-server 方式启动使用的是redis-server这个shell脚本中的默认配置2. 如何在启动redis时指定配置文件启动注意: 默认在redis安装完成之后在安装目录没有任何配置文件,需要在源码目录中复制redis.conf配置文件到安装目录(/usr/redis)a. 进入源码目录(源码文件在根目录,在根目录下进入源码包cd redis-4.0.10) cp redis.conf /usr/redis/    (将源码目录中的配置文件复制到安装目录中)     b. 进入/usr/redis/安装目录查看复制配置文件     cd /usr/redis/     ls c. 进入/usr/redis/bin目录加载配置启动    ./redis-server ../redis.conf (..表示上级目录)    3. 修改redis默认端口号vim redis.conf 修改里面 port 7000 保存退出(:wq)一旦使用了配置文件中的端口7000(./redis-server ../redis.conf )启动redis-server,这样在启动redis客户端的时候就需要指定端口号了(./redis-cli -p 7000) 4. redis中库的概念库: database 用来存放数据的一个基本单元一个库可以存放大量的key-value键值对      redis中每一个库都有一个唯一的名称|编号 从0开始   默认库的个数: 16个  库的编号: 0~15  默认使用的是0号库切换库命令: select dbid      (dbid就是库编号)select 1 (切换到1号库)5. redis中清除库的指令flushDB 清空当前库flushAll清空所有库

如果我们在启动redis服务时,直接执行 ./redis-server 启动redis服务,那我们使用的是默认配置,以后我们在使用的过程中肯定是要修改配置的,那我们怎样指定配置文件启动呢?

指定配置文件启动

首先需要进入redis源码包复制redis.conf到/usr/redis目录下

执行复制的指令:  cp redis.conf /usr/redis/

在这里插入图片描述

在这里插入图片描述

修改redis的端口号

端口号是在配置文件中修改的,在修改时我们需要使用vim,所以我们需要提前安装vim,只要在Linux下执行下面的一条指令就可以安装vim

yum -y install vim

在这里插入图片描述

在这里插入图片描述

注意:一旦修改了配置文件中的端口号,且在启动redis-server服务时使用的是这个配置文件,那么在启动redis客户端的时候就需要指定使用的这个配置文件中的端口号了(redis服务和客户端不一样,redis服务相当于mysql服务,redis客户端相当于操作Mysql的Navicat)

在这里插入图片描述

另外补充一下:redis中默认的key都是永久存储的

9.1 数据库操作指令

# Redis中库说明- 使用redis的默认配置启动redis服务后,默认会存在16个库,编号为0~15- 可以使用 select 库的编号 来选择一个redis库# Redis中操作库的指令- 清空当前的库   FLUSHDB- 清空所有的库   FLUSHALL# Redis客户端显示中文在启动Redis客户端的时候在后面加上 --raw./redis-cli -p 7000 --raw

redis中库的概念

  • 库: database 用来存放数据的一个基本单元,一个库可以存放大量的key-value键值对

  • redis中每一个库都有一个唯一的名称|编号, 从0开始

  • 默认库的个数: 16个 库的编号: 0~15 默认使用的是0号库

  • 切换库命令: select dbid (dbid就是库编号)
    例如: select 1 (切换到1号库)


我们来进入redis.conf配置文件查看一下

在这里插入图片描述

操作库的指令

  • 清空当前的库 FLUSHDB
  • 清空所有的库 FLUSHALL
  • 切换库 select 库的id

在查询时使得中文可以正常显示

如果想要redis中的中文可以正常显示,那么在启动redis客户端时需要在后面加上 --raw

./redis-cli -p 7000 --raw   

注:-p 7000 指的是使用端口号为7000

9.2 操作key相关指令

# 1.DEL指令- 语法 :  DEL key (如果要删除多个key,不同key之间可以用空格隔开,例如: DEL key1 key2 key3) - 作用 :  删除给定的一个或多个key 。不存在的key 会被忽略。- 可用版本: >= 1.0.0- 返回值: 被删除key 的数量。 # 2.EXISTS指令- 语法:  EXISTS key(如果要判断多个key 不同key之间用空格隔开 例如:EXISTS key1 key2 key3 只要存在1 个,就返回存在的数量)- 作用:  检查给定key 是否存在。- 可用版本: >= 1.0.0- 返回值: 若key 存在,返回1 ,否则返回0。# 3.EXPIRE- 语法:  EXPIRE key seconds- 作用:  为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。- 可用版本: >= 1.0.0- 时间复杂度: O(1)- 返回值:设置成功返回1 。# 4.KEYS- 语法 :  KEYS pattern- 作用 :  查找所有符合给定模式pattern 的key 。- 语法:KEYS * 匹配数据库中所有key 。KEYS h?llo 匹配hello ,hallo 和hxllo 等。(?代表一个任意字符,不能代表0个字符)KEYS h*llo 匹配hllo 和heeeeello 等。 (*代表任意多个字符,可以是0个)KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。特殊符号用 "\" 隔开([]也是只能匹配一个,只能匹配hallo或者是hello,如果想要匹配多个,可以使用h[ae][ae]llo )- 可用版本: >= 1.0.0- 返回值: 符合给定模式的key 列表。# 5.MOVE- 语法 :  MOVE key db- 作用 :  将当前数据库的key 移动到给定的数据库db 当中。- 可用版本: >= 1.0.0- 返回值: 移动成功返回1 ,失败则返回0 。# 6.PEXPIRE- 语法 :  PEXPIRE key milliseconds- 作用 :  这个命令和EXPIRE 命令的作用类似,但是它以毫秒为单位设置key 的生存时间,而不像EXPIRE 命令那样,以秒为单位。- 可用版本: >= 2.6.0- 时间复杂度: O(1)- 返回值:设置成功,返回1  key 不存在或设置失败,返回0# 7.PEXPIREAT- 语法 :  PEXPIREAT key milliseconds-timestamp- 作用 :  这个命令和EXPIREAT 命令类似,但它以毫秒为单位设置key 的过期unix 时间戳,而不是像EXPIREAT那样,以秒为单位。- 可用版本: >= 2.6.0- 返回值:如果生存时间设置成功,返回1 。当key 不存在或没办法设置生存时间时,返回0 。(查看EXPIRE 命令获取更多信息)# 8.TTL- 语法 :   TTL key- 作用 :   以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。- 可用版本: >= 1.0.0- 返回值:当key 不存在时,返回-2 。当key 存在但没有设置剩余生存时间时,返回-1 。否则,以秒为单位,返回key 的剩余生存时间。- Note : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。# 9.PTTL- 语法 :  PTTL key- 作用 :  这个命令类似于TTL 命令,但它以毫秒为单位返回key 的剩余生存时间,而不是像TTL 命令那样,以秒为单位。- 可用版本: >= 2.6.0- 返回值: 当key 不存在时,返回-2 。当key 存在但没有设置剩余生存时间时(即永久存储),返回-1 。- 否则,以毫秒为单位,返回key 的剩余生存时间。- 注意 : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。# 10.RANDOMKEY- 语法 :  RANDOMKEY- 作用 :  从当前数据库中随机返回(不删除) 一个key 。- 可用版本: >= 1.0.0- 返回值:当数据库不为空时,返回一个key 。当数据库为空时,返回nil 。# 11.RENAME- 语法 :  RENAME key newkey- 作用 :  将key 改名为newkey 。当key 和newkey 相同,或者key 不存在时,返回一个错误。当newkey 已经存在时,RENAME 命令将覆盖旧值。- 可用版本: >= 1.0.0- 返回值: 改名成功时提示OK ,失败时候返回一个错误。# 12.TYPE- 语法 :  TYPE key- 作用 :  返回key 所储存的值(value)的类型。- 可用版本: >= 1.0.0- 返回值:none (key 不存在)string (字符串)list (列表)set (集合)zset (有序集)hash (哈希表)
  1. 删除指定的key
DEL key注: (DEL大小写都可以)
  • 使用 DEL key 就可以删除指定的key了,如果想要删除多个key,则多个key之间使用空格隔开就可以了,返回值为成功删除key的数量

在这里插入图片描述

  1. 检查key是否存在
EXISTS key
  • 使用 EXISTS key 可以检查key是否存在,key存在返回1,不存在返回0,如果想要检查多个key是否存在,则多个key之间使用空格隔开,且存在多少个key就会返回相应的数量,否则会返回0

在这里插入图片描述

  1. 设置key的生存时间(单位为 s)
EXPIRE key seconds- 作用:  为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。- 可用版本: >= 1.0.0- 时间复杂度: O(1)- 返回值:设置成功返回1 。
  • EXPIRE key seconds 给key设置生存时间,当 key 过期时,会被自动删除,设置过期时间成功返回1,设置失败返回0

在这里插入图片描述

  1. 查找所有符合给定模式pattern 的key
 KEYS pattern
  • 作用 : 查找所有符合给定模式pattern 的key 。
  • 有以下三种
    • *匹配任意多个字符
    • ?匹配单个字符
    • []匹配单个指定字符
      • [a|b] 这样就代表指定匹配 a 或者 匹配 b
  • KEYS * 匹配数据库中所有key 。
    KEYS h?llo 匹配hello ,hallo 和hxllo 等。 (?代表一个任意字符,不能代表0个字符)
    KEYS h*llo 匹配hllo 和heeeeello 等。 ( *代表任意多个字符,可以是0个)
    KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。特殊符号用 “” 隔开([]也是只能匹配一个,只能匹 配hallo或者是hello,如果想要匹配多个,可以使用h[ae][ae]llo )
  • 返回值: 符合给定模式的key 列表。

在这里插入图片描述

  1. 将当前数据库的key 移动到给定的数据库当中
MOVE key db(db 代表移动到哪个数据库的id)
  • 将当前数据库的key 移动到给定的数据库当中,移动成功返回1 ,失败则返回0 。

在这里插入图片描述

  1. 设置key的生存时间(单位为 ms)
PEXPIRE key milliseconds

与EXPIRE很像,不再赘述,只不过这个是 ms

  1. 返回指定key的生存时间(单位为s)
TTL key
  • 以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。
  • 当key 不存在时,返回-2 。
    当key 存在但没有设置剩余生存时间时,返回-1(即生存时间无限时返回-1) 。
    否则,以秒为单位,返回key 的剩余生存时间。
  1. 返回指定key的生存时间(单位为ms)
PTTL key

和TTL很像,不再赘述,只不过这个是ms

  1. 从数据库中随机返回一个key
RANDOMKEY
  • 从数据库中随机返回一个key

在这里插入图片描述

  1. 修改key的名字
RENAME key newkey
  • 将key 改名为newkey 。当key 不存在时,返回一个错误。当newkey 已经存在时,RENAME 命令将覆盖旧,改名成功返回OK,改名失败返回一个错误

在这里插入图片描述

  1. 返回key所对应的value的类型
TYPE key
  • 如果key存在,就会返回其对应的value的类型,否则就会返回none

在这里插入图片描述

10. Redis操作不同类型的数据

10.1 Redis操作String类型

1. 存存储模型

在这里插入图片描述

2. 常用操作命令

命令 说明
set 设置一个key/value
get 根据key获得对应的value
mset 一次设置多个key value
mget 一次获得多个key的value
getset 获得原始key对应的value,同时设置新的value
strlen 获得指定key对应的value的长度
append 为key对应的value追加内容并返回追加之后value的长度
getrange 获取指定key对应的value指定索引范围的内容
setex 在设置一个key的时候就指定存活的有效期(单位: 秒)
psetex 在设置一个key的时候就指定存活的有效期(单位: 毫秒)
setnx 存在key时不做任何操作,不存在添加
msetnx 原子操作(只要有一个存在不做任何操作) 可以同时设置多个key,只有有一个存在都不保存
decr 若key对应的value为数值类型(数值串)对value进行-1操作
decrby 若key对应的value为数值类型(数值串)对value减去指定数值
Incr 对key对应的value数值类型(数值串)进行+1操作
incrby 对key对应的value数值类型(数值串)加上指定数值
Incrbyfloat 对key对应的value数值类型(数值串)加上浮点数

set 操作

set  key  value
  • 设置一个key value

在这里插入图片描述

get 操作

get  key
  • 根据key获得对应的value

在这里插入图片描述

mset 操作

mset  key1  value1  key2  value2
  • 一次设置多个key value

在这里插入图片描述

mget 操作

mget  key1 key2 key3
  • 一次获得多个key的value

在这里插入图片描述

getset 操作

getset  oldKey  newValue
  • 获得原始key对应的value,同时设置新的value

在这里插入图片描述

strlen 操作

strlen  key
  • 获得指定key对应的value的长度

在这里插入图片描述

append 操作

append  key  str
  • 为key对应的value追加内容并返回追加之后value的长度

在这里插入图片描述

getrange 操作

getrange  key  start  end     (索引0开始)
  • 获取指定key对应的value指定索引范围的内容

在这里插入图片描述

setex 操作

setex  key  seconds  value
  • 在设置一个key的时候就指定存活的有效期(单位:秒)

在这里插入图片描述

psetex 操作

psetex key milliseconds value
  • 在设置一个key的时候就指定存活的有效期(单位: 毫秒)

在这里插入图片描述

setnx 操作

setnx  key  value
  • 存在key时不做任何操作,不存在添加

在这里插入图片描述

mesetnx 操作

msetnx key1 value1 key2 value2
  • 可以同时设置多个key,只有有一个存在都不保存

在这里插入图片描述

decr 操作

decr  key
  • 若key对应的value为数值类型(数值串)对value进行-1操作

在这里插入图片描述

decrby 操作

decrby key decrement
  • 若key对应的value为数值类型(数值串)对value减去指定数值

在这里插入图片描述

Incr 操作

Incr   key
  • 对key对应的value数值类型(数值串)进行+1操作

在这里插入图片描述

incrby 操作

incrby key increment
  • 对key对应的value数值类型(数值串)加上指定数值

在这里插入图片描述

Incrbyfloat

incrbyfloat key increment
  • 对key对应的value数值类型(数值串)加上浮点数

在这里插入图片描述

10.2 Redis操作List类型

list 列表 相当于java中list 集合 特点 元素有序可以重复(类似于java中的List,但是也有一些细微的区别)

key是String,value是List

1.内存存储模型

在这里插入图片描述

2.常用操作指令

命令 说明
lpush 存在列表就直接放,不存在就先创建列表再放,将某个值(某些值)加入到key列表头部
lpushx 同lpush,但是必须要保证这个key存在
rpush 存在列表就直接放,不存在就先创建列表再放,将某个值(某些值)加入到key列表尾部
rpushx 同rpush,但是必须要保证这个key存在
lpop 返回和移除列表首部的第一个元素
rpop 返回和移除列表尾部的第一个元素
lrange 获取key对应的列表指定下标区间内的元素
llen 获取key对应的列表元素个数
lset 设置key对应的列表某一个指定索引的值(索引必须存在)
lindex 获取key对应的列表某一个指定索引位置的元素
lrem 从key对应的列表中从左到右删除指定数量的对应元素
ltrim 只保留列表中特定区间内的元素,删除其他元素
linsert 在某一个元素之前,之后插入新元素

lpush 操作

lpush key value1 value2 value3(创建列表并往列表中添加value,可以添加多个,且value可以重复)
  • 存在列表就直接将值放到列表的头部,不存在就先创建再将值放到列表的头部

在这里插入图片描述

lpushx 操作

lpushx key value1 value2
  • 只有当key存在时才会将值插入到key对应的列表的头部,否则不会插入

在这里插入图片描述

rpush 操作

rpush key value1 value2 value3
  • 存在列表就直接将值放到列表的尾部,不存在就先创建再将值放到列表的尾部

在这里插入图片描述

rpushx 操作

rpushx key value1 value2 value3
  • 只有当key存在时才会将值插入到key对应的列表的尾部,否则不会插入

在这里插入图片描述

lpop 操作

lpop key
  • 删除key对应的列表的首部第一个元素并将删去的首部的第一个元素返回

在这里插入图片描述

rpop 操作

rpop key
  • 删除key对应的列表的尾部第一个元素并将删去的尾部的第一个元素返回

在这里插入图片描述

lrange 操作

lrange key start stop
  • 返回key对应的列表中的索引从start到stop的元素

在这里插入图片描述

llen 操作

llen key
  • 返回key对应的列表中的元素数量

在这里插入图片描述

lset 操作

lset key index value
  • 设置(修改)key对应的列表中指定索引的值(索引必须存在)

在这里插入图片描述

lindex 操作

lindex key index
  • 获取key对应的列表中指定索引处的元素

在这里插入图片描述

lrem 操作

lrem key count value
  • 从key对应的列表中从左到右删除指定数量的对应元素

在这里插入图片描述

ltrim 操作

ltrim key start stop
  • 只保留key对应的列表中指定索引范围内的元素,其他元素都删除

在这里插入图片描述

linsert 操作

linsert key BEFORE|AFTER pivot value(BEFORE代表之前,AFTER代表之)
  • 会向key对应的列表中pivot元素 之前|之后 插入value,如果有多个pivot匹配,则会匹配前面的,默认从首部到尾部匹配

在这里插入图片描述