Redis的基础通用命令

目录

Redis简介

Redis环境搭建

基础通用命令


Redis简介

  Redis是一个在内存中存储数据的中间件,可用于作为数据库,也可作为数据缓存。适用于分布式系统。

Redis的一些特性:

1、主要通过“键值对”的方式存储数据,是一种“非关系型”数据库。

2、可编程的:针对Redis的操作,可以直接通过简单的交互式命令进行操作。也可以通过一些脚本的方式,批量执行一些操作(可以带有一些逻辑)。

3、拓展性:可以在Redis原有的基础功能上再进行拓展。Redis提供了一组API,可以通过C,C++等语言编写Redis拓展。

4、持久化:Redis支持持久化,就是把数据存储在硬盘上。内存为主,硬盘为辅。(硬盘相当于对内存的数据备份了一下)如果Redis重启了,就会在重启时加载硬盘中的备份数据,使Redis的内存恢复到重启前的状态。

5、支持集群:一个Redis服务器能存储的数据是有限的。引入多个主机,部署多个Redis节点。每个Redis节点存储数据的一部分。

6、高可用:Redis自身也是支持“主从”结构的。从节点就相当于主节点的备份。

7、存取速度快:第一Redis数据在内存中,比访问硬盘的数据库快得多。第二Redis的核心功能是比较简单的逻辑。第三从网络角度,Redis使用了IO多路复用(使用一个线程,管理很多个socket)的方式。第四Redis使用的是单线程的模型。减少了不必要的线程之间的竞争开销。

Redis环境搭建

我们此处是在Linux系统(Ubuntu)中进行安装。Redis官方是不支持Windows版本的。

使用apt安装:

apt install redis -y

查看安装是否成功:

netstat -anp | grep redis

redis安装成功后,默认的ip是127.0.0.1,也就是说只能由当前主机上的客户端访问,跨主机就访问不了了。要使其他主机也能访问。

要修改 /etc/redis/redis.conf

• 修改 bind 127.0.0.1 为 bind 0.0.0.0
• 修改 protected-mode yes 为 protected-mode no

# By default, if no "bind" configuration directive is specified, Redis listens
# for connections from all the network interfaces available on the server.
# It is possible to listen to just one or multiple selected interfaces using
# the "bind" configuration directive, followed by one or more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
# internet, binding to all the interfaces is dangerous and will expose the
# instance to everybody on the internet. So by default we uncomment the
# following bind directive, that will force Redis to listen only into
# the IPv4 loopback interface address (this means Redis will be able to
# accept connections only from clients running into the same computer it
# is running).
#
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# bind 127.0.0.1   # 注释掉这⾏
bind 0.0.0.0       # 添加这⾏
protected-mode no  # 把 yes 改成 no

启动 Redis 服务

service redis-server start

停⽌ Redis 服务

 service redis-server stop

重启 Redis 服务

service redis-server restart

使用redis自带的客户端来连接服务器

redis-cli -h 要连接的ip -p  要连接的端口号

验证连接是否成功

ping

基础通用命令

get : 根据key来取value,如果当前key不存在,会返回nil,表示空。

set:把key和value存储进去(key和value默认都是字符串类型)

Redis支持很多种数据结构,整体上来说,Redis是键值对结构。key固定就是字符串,value实际上会有多种类型。

keys :用来查询当前服务器上匹配的key,通过一些特殊符号(通配符)来描述key的模样,匹配上述模样的key就能被查询出来。

key pattern

pattern支持如下通配样式:

? 匹配任意一个字符

匹配0个或者多个任意字符

[]  给出固定的选项

排除固定项

• h?llo 匹配 hello , hallo 和 hxllo
• h*llo 匹配 hllo 和 heeeello
• h[ae]llo 匹配 hello 和 hallo 但不匹配 hillo
• h[^e]llo 匹配 hallo , hbllo , ... 但不匹配 hello
• h[a-b]llo 匹配 hallo 和 hbllo

:keys命令的时间复杂度是O(N),在生产环境上一般会禁止使用keys命令,避免执行时间过长,使redis服务器被阻塞了,无法给其他客户端提供服务。

exists :判定key是否存在,返回key存在的个数。时间复杂度O(1) /O(N) 

exists key [key...]

del :删除指定的key,可以删除一个或多个。返回删掉的key的个数。时间复杂度O(1)/O(N)

expire:给指定的key设置过期时间,设置的时间单位是秒

pexpire:和expire一样,单位是毫秒

ttl:time to live 存活时间,可以查看当前key的过期时间还剩多少

type:可以查看key对应的value的类型


常见面试题:redis的key过期策略

redis的整体策略是:

1、定期删除:每次抽取一部分数据,进行验证过期时间,删除已经过期的,保证抽取检查的过程足够快。 定期删除的时间是有明确的要求的,因为redis是单线程的程序,如果扫描过期key的时间太多了,就可能导致正常处理请求命令就被阻塞了。

2、惰性删除 : 假设这个key已经到过期时间了,但是暂时还没删它,key还存在。紧接着,后面又一次访问,正好用到了这个key,于是这次访问就会让redis服务器触发删除key的操作,同时再返回一个nil

 以上关于redis,希望对你有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值