一篇搞定学会Redis基本使用(万字长篇)

文章目录

  • 前言
  • 服务启动
    • Windows环境下
    • linux环境下
    • 设置口令启动
  • 服务器关闭
  • 服务连接
    • 查看服务性能
  • 数据库指令
    • 数据库相关指令
    • 保存到本地
  • 存取指令
    • 对String的操作
      • set/get
      • 切片操作
      • 追加操作
      • setnx/setex
      • mset/mget一次输入/获取多个值
    • hash类型的操作
      • hset/hget
      • 多个属性赋值
      • 删除某个属性
    • 列表类型
      • lpush /lrange
      • 删除
      • linsert插入
      • 索引查值
    • 集合类型(无序)
      • 添加/取值(sadd/smembers)
      • 集合运算
      • 集合成员指令
    • 集合类型(有序)
      • 添加与取值
      • 值的增加
      • 删除元素
    • 其他类型
  • Python对Redis的操作
  • Redis 主从复制分离
    • 主机查看命令
    • 奴隶(salve)机器指令
  • Redis 失败启动的常见解决方案
    • rdb文件修复
    • aop 修复
  • 总结

前言

和slq语句比起来,这个redis数据库的操作有手就行,当然你要跟我扯实际的项目运用所带来的复杂度,那完全就是在抬杠。
当前演示环境为Windows的Phpstudy所搭建的环境,具体的操作与Linux一致,可能启动有所差异,但是都会说明。
redis 是一个NoSQL数据库,其操作不想SQL数据库,但是使用起来是更简单的,适合做高速缓存服务。采用单线程+异步I/O来实现高速的读取(在python里面其实就是协程(微线程)的意思,python里面没有流这种概念,但是有类似概念)

服务启动

Windows环境下

在phpstudy里面直接电器启动就OK了,但这个是默认启动
一篇搞定学会Redis基本使用(万字长篇)_第1张图片
具体的其实也可以查看配置文件
一篇搞定学会Redis基本使用(万字长篇)_第2张图片
一篇搞定学会Redis基本使用(万字长篇)_第3张图片
你要是没有相关环境的话,或者是为了方便操作的话,可以先直接使用这个工具,MySQL的也有,好处就是不用你自己在Windows里面安装,你只需要配置个环境变量即可,而且也不太建议在生活系统(win里面安装数据库服务)

linux环境下

在前面的话我们看见了,在那里有配置文件,其实我们在Linux里面或者在windows的命令模式下启动也可以手动指定配置文件启动。
接下来介绍一下启动方式
默认启动

redis-server > redis.log & 放后台定向输入到日志
systemctl start redis-server 直接后台,而且方便管理

带入参数,指定端口,数据库数量等等

redis-server --port 1024 端口指定
systemctl start redis-server --port 1024

systemctl start redis-server --databases 32 指定数据库数量

systemctl start redis-server --port 1024 --databases 32多个指定
 

读取配置文件启动
这个按照你自己的需要写一个配置文件

redis-server xxx.config
systemctl start redis-server xxx.config

例如:
systemctl start redis-server /home/huterox/redis/mystart_redis.config

设置口令启动

为了保护安全的话,在启动的时候还可以设置密码

systemctl start redis-server --requirepass yourpasswd

一篇搞定学会Redis基本使用(万字长篇)_第4张图片
我这个是模拟一下,你要是真的在windows里面的phpstudy 环境下的话直接这样
一篇搞定学会Redis基本使用(万字长篇)_第5张图片

服务器关闭

这个方法就多了,那么演示一下怎么在redis里面关闭吧
quit 这个指令关闭redis-cli
shutdown 关闭 redis-server

shutdown
quit
这就关了

服务连接

连接的话我们需要使用到一个玩意就是
redis-cli这个东西进行连接到我们的数据库,然后进行操作。

systemctl start redis-cli
或者直接
redis-cli
这个都是默认的连接本机的啊
redis-cli -h 主机地址 -p 对方端口

当你连接进去后,如果开启时设置了密码
那么输入:

auth yourpasswd

一篇搞定学会Redis基本使用(万字长篇)_第6张图片

之后你就可以正常操作了。

查看服务性能

这个就是一个简单的服务检测
使用redis-benchmark就好了 crtl+c停止
一篇搞定学会Redis基本使用(万字长篇)_第7张图片
1.75秒10w这个性能还是可以的(鄙人设备,戴尔G5还是可以的,千万别买单背光的,我脑子当时秀逗了,外星人灯控白搭了),买的云服务器就不知道喽。

数据库指令

数据库相关指令

由于我们这个是键值对数据库,所以基本上没有比较复杂的语句,更多的是指令,通过指令来操作数据库。

选择数据库

select 数据库编号(0开始)

查看数据库的存储了几个数据

dbsize
keys *

这里先简单存入几个数据

set name jack
set age 20

一篇搞定学会Redis基本使用(万字长篇)_第8张图片

随机返回一个key,这玩意是内置的一个方法指令,有点意思
一篇搞定学会Redis基本使用(万字长篇)_第9张图片
清空数据(分两种,一个全清空,一个清除当前数据库的)

flushdb 清空当前数据库
flushall 全部

下面举个例子:
(1)切换数据库(插入一些数据)
一篇搞定学会Redis基本使用(万字长篇)_第10张图片
(删除当前)
一篇搞定学会Redis基本使用(万字长篇)_第11张图片
(全部删除)
一篇搞定学会Redis基本使用(万字长篇)_第12张图片

删除建

del key

保存到本地

如果要数据保存到本地永久化的话,在默认情况下,要么在60s内有1W加的数据存储到内存中,要么这条数据在900s内还在内存中,否则不会自动保存,如果要保存的话,那么使用save或者bgsave
save保存
这个直接保存
bgsave后台保存
如果卡住了的话那么使用这个。
一篇搞定学会Redis基本使用(万字长篇)_第13张图片

存取指令

这里补充一下,type key 可以查看数据类型

对String的操作

set/get

set keyname values
get keyname
获取与读取数据

一篇搞定学会Redis基本使用(万字长篇)_第14张图片

切片操作

getrange key 1 3
[1,3]
在这里插入图片描述

追加操作

append key xxx
一篇搞定学会Redis基本使用(万字长篇)_第15张图片

setnx/setex

setnx 这玩意是指,当键值对存在时,不加入(也就是不改变原来的数据)
不存在就加入。
没有加入返回0
一篇搞定学会Redis基本使用(万字长篇)_第16张图片
在这里插入图片描述
setex是值设置存在时间,例如验证码,超过60秒后就消失了
一篇搞定学会Redis基本使用(万字长篇)_第17张图片
这个指令还能这样写

set key hello ex 60

60s后就没了
一篇搞定学会Redis基本使用(万字长篇)_第18张图片

mset/mget一次输入/获取多个值

mset stu1 jack stu2 jerry

一篇搞定学会Redis基本使用(万字长篇)_第19张图片

hash类型的操作

这个hash类型是个什么玩意呢,最简单的样子就是类似于我们python里面的字典,前面加个h就是了,操作和那个字符串的类似

hset/hget

这个呢,都是只能存入和获取其中一个key
现在举个例子(这是一个python字典)现在我把它存进去

jack={'name':jack,'age':10,'heigh':185}

一篇搞定学会Redis基本使用(万字长篇)_第20张图片
这个呢只能一个一个来,那么前面hmget/set就可以多个

多个属性赋值

hmset jack name jack age 10 heigh 185

获取属性值

hmget jack name age heigh

获取key的所有值

hkeys jack

获取key对应的属性的值

hvals jack

获取所有

hgetall jack

一篇搞定学会Redis基本使用(万字长篇)_第21张图片

删除某个属性

现在我加入一个新的元素在Jack里面

hset jack s s

一篇搞定学会Redis基本使用(万字长篇)_第22张图片
现在我要删除
一篇搞定学会Redis基本使用(万字长篇)_第23张图片
修改属性其实也很简单,直接在原来的属性修改就行了,例如改名字为Jerry

hset jack name jerry

列表类型

这个就更简单了。
但是这里的话分为左右,也就是顺序和逆序。

lpush /lrange

一个是往左放入,一个是往左开始读取。看效果
一篇搞定学会Redis基本使用(万字长篇)_第24张图片
所以除此之外还有
rpush 这个就是你可以认为的顺序

删除

lrem list 1 30
1是指删除1个从左到右,-1反之 30删去30,有时候会出现多个元素。
lpop list 删除——删的同时,把值返回从左开始

linsert插入

linsert list before/after 50 7

一篇搞定学会Redis基本使用(万字长篇)_第25张图片

索引查值

lindex list 0(0开始 -1结尾最后一个)
llen list ——返回列表的长度

集合类型(无序)

添加/取值(sadd/smembers)

一篇搞定学会Redis基本使用(万字长篇)_第26张图片
(查看个数
在这里插入图片描述

集合运算

交集

sinter a b

并集

sunion a b

差集

sdiff a b (a差b)

集合成员指令

查看元素是否在集合当中

sismember set1 80
判断80在不在 ? 1 0

一篇搞定学会Redis基本使用(万字长篇)_第27张图片
删除集合元素
这个集合是无序,直接来个pop删除

spop set1 2
随机删除2
srem set1 30
删除指定的,可以删除多个

集合类型(有序)

这里的话就简单说一下吧,这玩意可以做一个在线的排行榜。

添加与取值

zadd phb 100 A 50 B 40 C
zrange phb 0 -1

一篇搞定学会Redis基本使用(万字长篇)_第28张图片
按照前面的值排序默认从小到大

zrevrange phb 0 -1 反之

一篇搞定学会Redis基本使用(万字长篇)_第29张图片

值的增加

把C加70然后看结果

zincrby phb 70 C

一篇搞定学会Redis基本使用(万字长篇)_第30张图片
再加一个D
一篇搞定学会Redis基本使用(万字长篇)_第31张图片

删除元素

删除指令
一篇搞定学会Redis基本使用(万字长篇)_第32张图片

其他类型

在redis 当中还有很多类型,例如与地理位置的相关的操作等等
更多文档类型建议去redisdoc.com 查询
一篇搞定学会Redis基本使用(万字长篇)_第33张图片
基本使用是类似的。

Python对Redis的操作

这个我比较满意的就是,在redis的第三方库当中的所有方法其实就是Redis的操作指令,举个简单的例子。

import redis   

red = redis.Redis(host='localhost', port=6379, decode_responses=True)
# host是redis主机,需要redis服务端和客户端都启动 redis默认端口是6379

red.set('name', 'junxi')  # 等价 set name jack

print(red['name'])

print(red.get('name')) # get name
 
print(type(r.get('name')))

这里说明一下在redis里面存储的数据是bytes所以有中文的情况下是需要编码的,decode_reponses=True

通过这个例子一目了然,如何使用python进行操作。只是有时候需要对返回值进行适当的调整。

Redis 主从复制分离

这玩意说句人话就是,一个主机负责读写,其他的设备协助主机只具备读的功能,也就是相当于实时同步了主机的数据,这样一来就可以通过访问这些设备来拿到主机当中也有的数据(只有主机master才能够写入数据其他的设备salve是只能读取的)
一篇搞定学会Redis基本使用(万字长篇)_第34张图片

主机查看命令

info replication 查看有几个奴隶机器

奴隶(salve)机器指令

开启奴隶,为master主机服务

salveof host port
masterauth 主机口令

如果失败的话可以关闭然后重启

redis-server --salveod host port --masterauth 口令

查看情况也可以用info

info replication

关闭

salve of no one

Redis 失败启动的常见解决方案

rdb文件修复

在你的安装目录下会有这么个文件。在Linux也一样
这个文件主要是用来记录数据的,也就是从内存把数据存到本地,如果这个文件损坏那么自然无法启动。下面两个方案
一。删了这个文件,重来。
一篇搞定学会Redis基本使用(万字长篇)_第35张图片
二。执行修复指令

redis-check-rdb dump.rdb

aop 修复

在存储数据到本地有两种方式,一个是把数据存到本地,还有一个那就是直接把你的指令存到本地,启动的时候重新执行你的指令恢复数据。

redis-server --appendonly(文件名随意) yes

修复

redis-check-aop --fix appendonly.aop

这个其实在你的目录下是找得到的。在Linux也一样
一篇搞定学会Redis基本使用(万字长篇)_第36张图片
对了,在这里那个

redis-check-rdb 在win这不一样,上面是redis-check-dump但是用法应该是一样的。

总结

在redis的基本使用,排错大概是这个样子的,关于数据类型那个比较多,建议去查官方文档,这里罗列出了较为常见的使用和方法。当然后面也会不断更新。

你可能感兴趣的:(笔记,数据库,redis,python,linux)