redis

Redis

技术分类

技术可以大致分为以下几类

(1)功能性

(2)扩展性

(3)性能

Redis是一种解决服务器性能的技术

安装

linux

查看GCC编译环境

1
gcc --version

(1)下载redis压缩包

下载地址:https://redis.io/

(2)上传压缩包到linux服务器/opt目录下

(3)解压

1
tar -zxvf redis-6.2.6.tar.gz

进入解压文件夹

1
cd redis-6.2.6

编译

1
make

跳过测试,直接安装

1
make install

默认安装目录

1
/usr/local/bin

windows

(1)下载解压压缩包

https://github.com/microsoftarchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.zip

img

(2)配置环境变量

(3)启动

1
redis-server.exe redis.windows.conf

img

(4)连接

1
redis-cli [-h] [-p]

配置文件

img

在配置文件中配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 表示Redis是不是以守护进程(后台进程)的方式运行,windows上面不支持
daemonize no

# 当客户端闲置多长时间后关闭连接 0表示不关闭
timeout 0

# 端口号配置
port 6379

# 指绑定的主机地址:是指哪些Ip地址的主机可以来连接这个Redis服务
# 127.0.0.1 指本机才能够访问这个Redis服务
bind 127.0.0.1
# bind 0.0.0.0 指任意的ip地址都可以来连接当前这个Redis服务

# 日志级别 debug | notice | verbose | warning
loglevel verbose

# 数据库的数量(通常情况下用处不大,默认有16个数据库,默认操作的是编号是0的这个数据库)
databases 16

# 密码的配置
requirepass password

持久化策略

RDB

AOF

启动

备份

1
cp  /opt/redis-6.2.6/redis.conf  /mnt/redis-6.2.6

修改/mnt/redis-6.2.6配置文件,将daemonize no改成yes

启动

1
redis-server /mnt/redis.conf

连接

1
redis-cli

关闭

1
redis-cli shutdown

Redis相关知识介绍

默认占用端口:6379

一共有16个库,默采用0号库

库的切换

1
select 1

redis底层采用的是单线程 + IO多路复用技术

什么是IO多路复用技术

img

Redis基本操作

key相关操作

查看所有key

1
keys *

查看key是否存在

1
exits key

查看key类型

1
type key

删除key

1
del key

异步删除key

1
unlink key

设置过期时间

1
expire key 10

查看过期时间

1
ttl key

-1 代表永不过期

-2 代表已过期

查看当前key数量

1
dbsize

清空当前库中的key

1
flushdb

删除所有库key

1
flushall

数据类型

String

redis中的String类型底层类似与java中的ArrayList数据结构

设置

1
set key value

以下这种方式,只有当key存在的时候,才会设置成功

1
setnx key value

多个值同时设置

1
mset k1 v1 k2 v2

只有当key存在的时候,才会设置成功

1
msetnx k1 v1 k2 v2

获取value

1
get key

同时获取多个key

1
get k1 k2

获取value长度

1
strlen key

追加

1
append key value

自增

1
incr key

自减

1
decr key

自定义步长

1
incrby key 10

获取指定范围value

1
getrange key [start end]

指定位置设置

1
setrange key start value

设置过期时间

1
setex key time value

获取值的同时,设置值

1
getset key value

List

底层是一个快速链表(数组+双向链表)

img

ziplist是一块连续分配的存储空间

1
push
1
lpush/rpush key value
1
pop
1
lpop/rpop key value
1
pop && push
1
rpoplpush k1 k2

获取

1
lrange key [start end]

end = -1 代表获取所有

获取指定位置元素

1
lindex key index

获取list长度

1
llen key

指定位置插入

1
linsert key before value newValue

从左边开始删除count个值为value的元素

1
lrem key count value

Set

底层数据结构是hashSet

1
sadd key v1 v2

获取所有values

1
smembers key

判断是否存在value

1
sismember key value

返回集合中元素个数

1
scard key

删除某个元素

1
srem key vaule

随机取值

1
spop key

随机取出多个值

1
srandmember key count

从一个集合中移动到另一个集合

1
smove k1 k2 value

返回两个集合的交集

1
sinter k1 k2

返回两个集合的并集

1
sunion k1 k2

返回两个集合的差集

1
sdiff k1 k2

Hash

底层数据结构是hasptable

1
hset key field value

一次添加多个键值对

1
hmset key field1 value1 field2 value2

field字段不存在时,设置才有效

1
hsetnx key field value

1
hget key field

判断field是否存在

1
hexists key field

获取所有keys

1
hkeys

获取所有values

1
hvals

自增

1
hincrby key field num

Zset

有序集合

1
zadd key score1 value1 score2 value2

自增

1
zincrby key increment value

1
zrange key startIndex stopIndex

从大到小

1
zrangebyscore key max min [limit offset count]

1
zrem key index

统计

1
zcount key min max

排名,返回元素中的排名

1
zrank key value

redis
http://cxycsx.vip/2023/08/30/redis/redis/
作者
程序员陈师兄
发布于
2023年8月30日
许可协议