Redis 安装配置应用|青训营

68 阅读7分钟

下面的内容来源网络,后面附有出处链接

Redis是什么

Redis 是现在最受欢迎的 NoSQL 数据库之一

  • 基于内存运行,性能高效
  • 支持分布式,理论上可以无限扩展
  • key-value存储系统
  • 开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API

redis安装

我是使用虚拟机上的ubuntu安装的

虚拟机 ubuntu16 安装 redis:

sudo apt-get update
sudo apt-get install redis-server # 安装Redis服务器端
  • 在 Ubuntu 系统中,软件包的二进制文件通常会被安装到 /usr/bin 目录下,配置文件会被安装到 /etc 目录下。因此,您可以在 /usr/bin 目录下找到 redis-server 命令,而在 /etc/redis 目录下找到 Redis 服务器的配置文件。

启动 redis :

redis-server

启动后就会一直在后台运行,Ctrl+c 或关闭终端退出

一些配置和检查

安装完成后,Redis 服务器会自动启动,我们检查 Redis 服务器程序

ps 命令->检查 Redis 服务器系统进程信息

$ ps -aux|grep redis
redis      3764  0.0  0.0  41876  3088 ?        Ssl  00:41   0:02 /usr/bin/redis-server 127.0.0.1:6379
gaoxiao+   5009  0.0  0.0  15984   940 pts/1    S+   01:26   0:00 grep --color=auto redis
  • 系统中正在运行一个名为 redis-server 的进程,进程 ID 为 3764,占用了 0.0% 的 CPU 和 0.0% 的内存。此外,该进程的启动命令为 /usr/bin/redis-server 127.0.0.1:6379,这意味着 Redis 服务器正在监听本地地址 127.0.0.1 上的 6379 端口。
  • 还有一个名为 grep 的进程,进程 ID 为 5009。这个进程是您执行 ps -aux|grep redis 命令时创建的,用于在 ps 命令的输出中搜索包含 “redis” 字符串的行。

netstat 命令->检查 Redis 服务监听状态的命令输出

$ netstat -nlt|grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN   
  • 系统中有一个进程正在监听本地地址 127.0.0.1 上的 6379 端口。LISTEN 状态表示该进程正在等待客户端连接。
  • 原理:netstat -nlt 命令用于显示系统中所有处于监听状态的 TCP 端口-n 选项表示以数字形式显示地址和端口号,而不是使用主机名和服务名;-l 选项表示仅显示处于监听状态的端口;-t 选项表示仅显示 TCP 协议的端口。同时使用了管道符 | 将 netstat 命令的输出传递给 grep 6379 命令,以便在输出中搜索包含 “6379” 字符串的行。

通过启动命令检查Redis服务状态的命令输出

$ sudo /etc/init.d/redis-server status
● redis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2023-08-15 00:21:50 PDT; 1h 12min ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 3751 ExecStopPost=/bin/run-parts --verbose /etc/redis/redis-server.post-down.d (code=exited, status=0/SUCCESS)
  Process: 3747 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 3744 ExecStop=/bin/run-parts --verbose /etc/redis/redis-server.pre-down.d (code=exited, status=0/SUCCESS)
  Process: 3765 ExecStartPost=/bin/run-parts --verbose /etc/redis/redis-server.post-up.d (code=exited, status=0/SUCCESS)
  Process: 3762 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
  Process: 3757 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-server.pre-up.d (code=exited, status=0/SUCCESS)
 Main PID: 3764 (redis-server)
   CGroup: /system.slice/redis-server.service
           └─3764 /usr/bin/redis-server 127.0.0.1:6379

8月 15 00:21:50 ubuntu systemd[1]: Starting Advanced key-value store...
8月 15 00:21:50 ubuntu run-parts[3757]: run-parts: executing /etc/redis/red...e
8月 15 00:21:50 ubuntu run-parts[3765]: run-parts: executing /etc/redis/red...e
8月 15 00:21:50 ubuntu systemd[1]: Started Advanced key-value store.
8月 15 00:30:11 ubuntu systemd[1]: Started Advanced key-value store.
Hint: Some lines were ellipsized, use -l to show in full.
  • 已经成功启动了 Redis 服务,并且它正在正常运行。Active: active (running) 表示 Redis 服务处于活动状态,since 二 2023-08-15 00:21:50 PDT; 1h 12min ago 表示服务启动时间。此外,还有一些有关 Redis 服务进程的信息,如进程 ID(Main PID: 3764 (redis-server))和进程所在的控制组(CGroup: /system.slice/redis-server.service)。

安装 Redis 服务器,会自动地一起安装 Redis 命令行客户端程序

$ redis-cli # 启动客户端程序访问Redis服务器。

# 命令行帮助
127.0.0.1:6379> help
redis-cli 3.0.6
Type: "help @<group>" to get a list of commands in <group>
      "help <command>" for help on <command>
      "help <tab>" to get a list of possible help topics
      "quit" to exit

# 查看所有key列表
127.0.0.1:6379> keys * # 用于查找 Redis 数据库中所有的键。
1) "test"

127.0.0.1:6379> ping # 测试连接情况
PONG #  输出
127.0.0.1:6379> set test "It's working!" # 设置需要返回的结果
OK # 输出
127.0.0.1:6379> get test # 再次检查
"It's working!" # 得到修改后的
127.0.0.1:6379> exit # 退出redis提示符并返回shell

gaoxiaozhi@ubuntu:~$ sudo systemctl restart redis # 重启redis实例
gaoxiaozhi@ubuntu:~$ redis-cli # 再次接入客户端
127.0.0.1:6379> get test # 测试修改数据
"It's working!"
# 如果失败可能是因为数据未持久化,重启服务导致数据丢失
127.0.0.1:6379> exit

一些操作使用

redis 客户端基本命令操作

gaoxiaozhi@ubuntu:~$ redis-cli

# 增加一条记录key1
127.0.0.1:6379> set key1 "hello"
OK
127.0.0.1:6379> get key1 # 打印记录
"hello"

# 增加一条数字记录
127.0.0.1:6379> set key2 1
OK
# 让数字自增
127.0.0.1:6379> INCR key2
(integer) 2
127.0.0.1:6379> INCR key2
(integer) 3

127.0.0.1:6379> get key2 # 打印记录
"3" # redis中默认字符串存储数据(二进制安全)

# 增加一个列表记录key3
127.0.0.1:6379> LPUSH key3 a
(integer) 1
# 从左边插入列表
127.0.0.1:6379> LPUSH key3 b
(integer) 2
# 从右边插入列表
127.0.0.1:6379> RPUSH key3 c
(integer) 3
# 按从左到右的顺序打印列表记录
127.0.0.1:6379> LRANGE key3 0 3
1) "b"
2) "a"
3) "c"

# 增加一个哈希记表录key4
127.0.0.1:6379> HSET key4 name "John Smith"
(integer) 1
# 在哈希表中插入Key为email和Value为"abc@gmail.com"的值
127.0.0.1:6379> HSET key4 email "abc@gmail.com"
(integer) 1
# 打印哈希表key4的name
127.0.0.1:6379> HGET key4 name
"John Smith"
# 打印整个哈希表
127.0.0.1:6379> HGETALL key4
1) "name"
2) "John Smith"
3) "email"
4) "abc@gmail.com"

# 增加一条哈希表记录key5,一次插入多个Key和value的值
127.0.0.1:6379> HMSET key5 username antirez password P1pp0 age 3
OK
# 打印哈希表中key为username和age的值
127.0.0.1:6379> HMGET key5 username age
1) "antirez"
2) "3"
# 打印完整的哈希表记录
127.0.0.1:6379> HGETALL key5
1) "username"
2) "antirez"
3) "password"
4) "P1pp0"
5) "age"
6) "3"

# 查看所有的key列表
127.0.0.1:6379> keys *
1) "test"
2) "key2"
3) "key4"
4) "key5"
5) "key1"
6) "key3"
# 删除key1,key5
127.0.0.1:6379> del key1
(integer) 1
127.0.0.1:6379> del key5
(integer) 1
# 查看所有的key列表
127.0.0.1:6379> keys *
1) "test"
2) "key2"
3) "key4"
4) "key3"

ubuntu16.04安装使用redis入门教程_腾讯数据架构师的博客-CSDN博客

RedisInsight 的图形化工具:

后期完善。。

一些更全的操作

字符串 string:

  • key *me 查找所有以 me 结尾的键
  • FLUSHALL 把所有数据库里面的键都删除掉(慎用)
  • 默认不支持中文(中文也是二进制存储的)
  • quit 退出
  • redis-cli --raw 以原始形式显示内容
  • clean 清空屏幕
  • TTL name 查看 key 为 name 的过期时间(-1:未设置过期时间, -2 表示已经过期)
  • EXPIRE name 10 name 键的过期时间为 10秒
  • SETEX name 10 gao 设置一个带有过期时间的键值对
  • SETNX 只有当键不存在时才设置键的值

列表 List(有序列表):

  • LPUSH list a 列表头部添加一个元素 a (也可同时添加多个)
  • RPUSH list b 列表尾部。。。
  • LPOP list 头部删除
  • RPOP list 2 尾部删除 2 个元素
  • LRANGE list 0 -1 获取第一个到最后一个
  • LLEN list 列表长度
  • LTRIM list 1 3 删除列表中索引除 1->3 的元素

集合 Set (无序集合,不重复):

  • SADD course redis 在集合 course 中添加 redis
  • SMEMBERS course 查看集合元素
  • SISMEMBER course redis 判断 redis 元素是否在集合中
  • SREM course redis 删除集合中的元素
  • 集合运算 SINTER SUNION SDIFF

有序集合 SortedSet (ZSet):

  • ZADD result 680 清华 660 北大 650 复旦 640 浙大 在集合添加
  • ZRANGE result 0 -1 输出第一个元素到最后一个元素
  • ZRANGE result 0 -1 WITHSCORES 输出第一个元素到最后一个元素(带分数)
  • SISMEMBER course redis 判断 redis 元素是否在集合中
  • ZSCORE result 清华 输出分数
  • ZEANK result 清华 输出排名 (从小到大的 index)
  • ZREVRANK result 清华 从大到小

哈希 Hash:

  • HSET person name laoyang 新建
  • HGET person name 查询
  • HGETALL person 获取整个哈希中的所有键值对
  • HDEL person age 删除哈希中的某个键值对
  • HEXISTS person name 判断某个键值对是否存在
  • HKEYS person 获取哈希中的所有键
  • HLEN person 获取哈希中所有键值对的数量

分布订阅模式 消息无法持久化, 无法记录历史消息等等

  • SUBSCRIBE geekhour 订阅这个频道 (可以同时开多个终端订阅)
  • publish geekhour redis 将消息发送到指定的频道

消息队列 Stream 流: 轻量级的消息队列(可用于解决发布订阅功能的一些局限性)

  • XADD geekhour * course redis 向 Stream 中添加消息,星号表示自动生成一个消息的 ID (保证递增),添加消息的内容就是课程是 Redis(回显信息就是消息的 ID)
  • XADD geekhour 1-0 course git 指定 ID 添加消息 (时间戳-序列号)
  • XLEN geekhour 查看 Stream 中消息的数量
  • XRANGE geekhour - + 查看 Stream 中的消息的详细内容(开始和结束使用减号和加号表示所有的消息)
  • XDEL geekhour 1686495710450-0 / XTRIM geekhour MAXLEN 0 删除消息 (MAXLEN 0 为删除所有消息)
  • XREAD COUNT 2 BLOCK 1000 STREAMS geekhour o 读取消息 (COUNT 2 表示一次读取两条消息, BLOCK 表示如果没有消息就阻塞 1000 毫秒也就是 1 秒,0 表示从头读取/$表示获取从现在开始以后的最新的消息)
  • XGROUP CREATE geekhour group1 0 创建消费者组
  • XINFO GROUPS geekhour 查看组信息
  • XGROUP CREATECONSUMER geekhour group1 consumer1 添加组消费者
  • XREADGROUP GROUP group1 consumer1 COUNT 2 BLOCK 3000 STREANS geekhour > 右箭头表示从这个消息中读取最新的消息

。。。 未完待续

课程链接如下 12.地理空间Geospatial_哔哩哔哩_bilibili