# 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都是永久存储的
# 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配置文件查看一下
操作库的指令
在查询时使得中文可以正常显示
如果想要redis中的中文可以正常显示,那么在启动redis客户端时需要在后面加上 --raw
./redis-cli -p 7000 --raw
注:-p 7000 指的是使用端口号为7000
补充知识
当我们的redis在后台运行的时候,我们想要关闭这个redis进程,我们可以使用如下命令查看后台的redis服务是哪个进程
ps aux|grep redis
如果想要关闭这个进程,只需要使用下面指令即可
kill 进程id
使用 kill + 进程id 即可关闭进程
# 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 (哈希表)
- 删除指定的key
DEL key
注: (DEL大小写都可以)
- 检查key是否存在
EXISTS key
- 设置key的生存时间(单位为 s)
EXPIRE key seconds
- 作用: 为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。
- 可用版本: >= 1.0.0
- 时间复杂度: O(1)
- 返回值:设置成功返回1 。
- 查找所有符合给定模式pattern 的key
KEYS pattern
- 将当前数据库的key 移动到给定的数据库当中
MOVE key db
(db 代表移动到哪个数据库的id)
- 设置key的生存时间(单位为 ms)
PEXPIRE key milliseconds
与EXPIRE很像,不再赘述,只不过这个是 ms
- 返回指定key的生存时间(单位为s)
TTL key
- 返回指定key的生存时间(单位为ms)
PTTL key
和TTL很像,不再赘述,只不过这个是ms
- 从数据库中随机返回一个key
RANDOMKEY
- 修改key的名字
RENAME key newkey
- 返回key所对应的value的类型
TYPE key
命令 | 说明 |
---|---|
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
get 操作
get key
mset 操作
mset key1 value1 key2 value2
mget 操作
mget key1 key2 key3
getset 操作
getset oldKey newValue
strlen 操作
strlen key
append 操作
append key str
getrange 操作
getrange key start end
(索引0开始)
setex 操作
setex key seconds value
psetex 操作
psetex key milliseconds value
setnx 操作
setnx key value
mesetnx 操作
msetnx key1 value1 key2 value2
decr 操作
decr key
decrby 操作
decrby key decrement
Incr 操作
Incr key
incrby 操作
incrby key increment
Incrbyfloat
incrbyfloat key increment
list 列表 相当于java中list 集合 特点 元素有序 且 可以重复(类似于java中的List,但是也有一些细微的区别)
key是String,value是List
命令 | 说明 |
---|---|
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
rpush 操作
rpush key value1 value2 value3
rpushx 操作
rpushx key value1 value2 value3
lpop 操作
lpop key
rpop 操作
rpop key
lrange 操作
lrange key start stop
llen 操作
llen key
lset 操作
lset key index value
lindex 操作
lindex key index
lrem 操作
lrem key count value
ltrim 操作
ltrim key start stop
linsert 操作
linsert key BEFORE|AFTER pivot value
(BEFORE代表之前,AFTER代表之)