文章目录
1.Redis介绍与使用
1. Redis介绍
- 官方称单体的Redis应用能够处理 10wQPS
- Redis是基于key-value类型存储数据的 no(Not Only)-sql 数据库,泛指 非关系型数据库
- 和关系型数据库相比,非关系型数据库基本都是把数据存在内存里面的,所以速度要快得多得多,而且
相对来说更轻量,在微服务的环境下更符合趋势 - Redis也支持持久化(将数据存到磁盘中),有两种持久化策略(RDB和AOF),保证数据不丢失
- 磁盘的响应速度,一般是毫秒级别;但是内存的响应速度是 ns 级别的
- 支持的数据类型多( String , Hash , List , Set , Sorted Set )
- 支持的语言广泛,基本上所有的编程语言都有与之对应的交互工具
- 从3.2版本之后,官方支持Clust和哨兵机制,能够很容易搭建分布式集群架构
2. Redis安装
2.1编译过程(省略),编译之后会产生以下几个可执行文件:
- redis-server:服务端
- redis-cli:命令行的客户端
- redis-check-aof:对AOF文件的检测和修复
- redis-check-rdb:对rdb文件的检测和修复
- redis-sentinel:哨兵角色启动的工具
2.2 启动redis-server的方式
直接启动
[root@localhost redis-6.2.6]# ./src/redis-server
推荐使用配置文件去启动服务端(后台)
在此之前,可能会涉及到的指令为:
cat redis.conf | grep -v '#'|grep -v '^$' >redis-simple.conf
查看redis.conf文件的内容==>过滤掉 # 的注解==>过滤掉 空格 ==>将过滤之后的结果输出到 redis-simple.conf文件中
编辑redis-simple.conf文件
[root@localhost redis-6.2.6]# vi redis-simple.conf
按i进入编辑,修改daemonize后的值为yes
esc退出,shift+: 输入wq保存并推出
启动redis-server,使用指定配置文件
[root@localhost redis-6.2.6]# ./src/redis-server ./redis-simple.conf
查看服务是否启动
验证方式:
ps -ef|grep redis
netstat -antp|grep redi
通过redis-cli去ping服务端
[root@localhost redis-6.2.6]# ps -ef | grep redis
root 6608 1618 0 19:46 pts/0 00:00:00 ./src/redis-server *:6379
root 11048 1618 0 19:59 pts/0 00:00:00 grep --color=auto redis
2.3 关闭服务端的方式:
- 通过linux的
kill指令去杀死redis进程(不建议) - 通过客户端调用
shutdown指令关闭redis服务端
2.4 常用配置
daemonized:是否以守护线程的方式启动port :redis服务器的端口,默认6379,生产环境为了安全,一般会修改dir:工作目录,默认为当前配置文件的目录,产生的持久化的文件和日志文件默认会产生在工作目
录中logfile:日志文件,默认为空,代表不保留日志.bind:绑定能够访问redis服务的host,默认为本机. 0.0.0.0 代表所有hostprotected-mode:保护模式,默认开启,如果想让远程客户端访问的话,保护模式也要关闭databases 16:redis默认的数据库的数量,默认是从DB0~15这16个库requirepass:访问服务端的密码,默认是没有密码
2.5 linux防火墙放行端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent 在public域中永久放行tcp协议的对6379端口上的程序的连接
firewall-cmd --reload :重新加载防火墙策略
3.Redis的指令
针对于不同的数据类型的指令
- 通用指令
- String
- Hash
- List
- Set
- Zset
3.1 通用指令
| 指令 | 说明 |
|---|---|
| dbsize | 查询当前库中的键值对的数量 |
| set key value | 新增或修改string类型键值对 |
| get key | 查询指定key对应的值 |
| del key [key…] | 删除一个或者多个key对应的值 |
| type key | 返回指定key的value的数据类型 |
| exists key[key…] | 判断指定的key存在的数量 |
| keys pattern | 根据规则匹配当前库中符合标准的key的列表 |
| expire key seconds | 为某个key设置过期时间,单位为 秒 |
| ttl key | 查询单个key的过期时间,-1代表不过期,-2代表不存在 |
| setnx | 涉及到乐观锁的概念,在Redis里面非常重要,常常用作分布式项目中的分布式锁的原理,如果当前的key不存在,相当于set的新增操作,如果当前key存在,相当于不做任何操作 |
| select index | 切换到指定index的redis库中 |
| flushall | 删除所有库中的键值对(可以证明redis库与库之间不是完全隔离的) |
keys与dbsize补充:实际工作用keys的情况很少,因为keys指令的时间复杂度为O(n),再加上redis的核心
功能是单线程的,所以生产环境的key数量很大的情况下,keys会严重耗时.
dbsize可以在生产环境中使用,因为它的时间复杂度是O(1),因为dbsize的返回值来自于redis自身维护
的一个key数量的计数器
3171

被折叠的 条评论
为什么被折叠?



