Redis基础使用

发布时间 2023-04-26 17:17:25作者: 狎客

1 安装

环境:Ubuntu

# 安装
sudo apt install redis-server

# 查看安装版本
redis-server --version

# 启动服务
service redis-server start

# 通过命令行使用Redis数据库
redis-cli
# 测试ping,返回PONG
ping

# 关闭服务
service redis-server stop


安装后,我们就有了这些工具

2 启动Redis

配置redis.conf文件,根据配置进行启动

# 直接启动
redis-server [/path/to/redis.conf]

# 停止
redis-cli shutdown

redis.conf文件模板可能会在/etc/redis/redis.conf,你可以通过find命令查找看看

添加一些键值对

set hello world
set java jedis
set python redis-py
rpush my_list a b c d e f g

3 单线程架构和I/O多路复用模型

因为Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务。
所以当我们同时启动两个客户端各自执行命令时,Redis服务器接收到两个命令后,所有命令会进入一个队列,然后被顺序执行。不会产生并发问题。
Redis 6.0引入了多线程

4 通用命令

Redis是基于key-value的数据结构服务器,它的value有五种数据结构,操作各不相同。但是针对key有一些通用的指令

查看所有键

keys *

键数量

dbsize

检查键是否存在

exists java
exists not_exist_key

删除键

del java

键过期

expire python 15
ttl python

键的数据结构类型

type hello
type mylist

5 五种数据结构

每种数据结构底层都有多种内部编码实现,可以查询对象的内部编码

object encoding hello
object encoding mylist

6 字符串

6.1 常用命令

设置值

set key value [ex seconds] [px milliseconds] [nx|xx]
setex key seconds value
setnx key value

ex seconds秒级过期时间、px millisenconds毫秒级过期时间、nx不存在才设置、xx存在才设置

获取值

get key

批量设置与获取

mset a aa b bb c cc
mget a b cc

计数

incr key
incrby key increment
incrbyfloat key increment

decr key
decrby key decrement

6.2 不常用命令

追加值

append key value

字符串长度

strlen key

设置并返回值

getset key value

设置指定位置的字符

setrange key offset value

获取部分字符串

getrange key start end

6.3 三种编码方式

int:8个字节的长整型

embstr:小于等于44个字节的字符串

raw:大于44个字节的字符串

7 可能存在的错误或警告

WARNING you have Transparent Huge Pages (THP) support enabled in your kernel
Linux透明大页的使用与禁用介绍 - 知乎 (zhihu.com)

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition.
Redis 优化之内存分配控制 vm.overcommit_memory_redis vm.overcommit_memory_富士康质检员张全蛋的博客-CSDN博客