redis学习

学习redis

前言:学习redis不用说,要在linux的环境,虽然Windows也有,不过线上不会去用,所以linux命令是基础。

废话不多说,开始学习!

起步:

redis官网:redis.io。(现在的很多技术网站的域名都是io结尾的)

下载安装:

  1. 解压到 /usr/local 目录
  2. make安装下。可能会遇到一些情况,比如gcc没有安装什么的,自己安装一下
  3. 执行make install命令。这一步也可以不需要,执行该命令只是把redis的执行程序安装到path下,任意目录就可以访问了

注:下载安装可以执行Linux的命令下载,我是直接官网下载拷贝的过去

启动:

几种方式的启动

      ./redis-server 客户端启动方式
      ./redis-server & 后台启动方式
      ./redis-server ../redis.conf &或者不加 修改配置文件后,带上配置文件启动
      nohup ./redis-server &加或不加 输出启动信息文件为nohup的文件
注:启动完,结束的时候可能会报错,说什么文件不能保存。原因是安装目录下没有读写权限,可以使用root用户操作,或者给该目录授权。启动仅仅只是启动,不代表可以使用,使用在下面的步骤。

关闭:

      kill pid 杀掉暴力版不推荐
      ./redis-cil shutdown客户端关闭,它会让正在操作的命令执行完毕才关闭

初使用:

使用:

./redis-cli开始使用

也可以输入(适用于远程连接):./redis-cli -h 加ip号 -p 加端口号 -a 密码 --raw(终端可以显示中文)

常用命令:

ping 返回 pong 证明服务启动正常

select 数字(0-15) 切换库。redis默认为16个库,可以自己配置

flushall 清空该库的数据

config get *或者指定匹配 查看配置的信息

dbsize 查看当前库的key数量

info 查看redis的服务信息

详情可以参考文档:

  1. 中文文档:redisdoc.com
  2. 英文文档:redis.io/commands

注:不熟悉的命令可以敲Tab提示

key的相关命令:

keys *或者指定匹配查询列的名字

move key db(几号库)把那个key移动到几号库

set key的名字 要设置的值设置值

setex key的名字 时间(秒) 设置的值设置值几秒后过期

get key的名字取值

getset key的名字 设置的值设置新值,返回久值

type key的名字获取值的类型

incr key的名字自增一(仅仅针对字符串类型的)

decr key的名字自减一(仅仅针对字符串类型的)

del key的名字删除值

redis存储的数据类型:

字符串的操作前面已经说过了。

list:(允许重复)

形式:key [a,b,c,d,e]

lpush:将一个或多个值插入列表的左边

rpush: 将一个或多个值插入列表的右边

lrange:取元素,可指定范围。0为第一个,-1为最后一个。例:lrange 0 -1,取出全部数据

lpop:删除左边一个

rpop:删除右边一个

lindex:根据下标取指定元素

set:(不允许重复)

sadd:放数据

smembers:取数据

sismembers:判断是否为set 中元素。1为有,0为没有

scard:取总数

srem:删除元素

zset:(有序集合)

根据分值排序,相当于java的TreeSet

zadd:放数据。例:zadd key 1 A 2 B 3 C。key为键值,数字为分值,ABC为具体的值

zrem:删除数据。例:zram key A

zrange:取值。跟list的相同

zcard:取总数。

zrank:从小到大排列,返回索引。例:zrank key A ->1

zrevank:从小到大排列。与上面相反。例:zrevank key A ->3

Hash:

hset:存值。例:hset key name "张三"。

hget:取值。例:hget key name ->张三

hgetAll:取出所有的值。

事务:

multi开启事务

业务逻辑

exec提交

注:事务为弱事务,只要是能入队成功,就会插入部分数据

例:multi

 ㈠set k1 k1

㈡set k2 <--有问题,没有设置值

exec

提交后,㈠依然可以插入成功,㈡提示报错

悲观锁:

一般来说都会使用版本控制。

idmoneyversion
11001
2  
用户A、B一起进来读取数据,A首先操作了100这个数据变成了50,提交的时候对应version就会自动的加一操作。

B后操作数据100,把100变成了80,提交的时候version首先回去判断是否大于真正的version,不大于说明有人先操作的数据,B提交的请求失效,不予更新。

这种版本的控制保证了数据的一致性。

watch:

watch是redis中保证数据的安全性的一种方式。redis去监视某一值,当操作这个数据的时候发现被被人改过了,就自动放弃该事务。

例:watch key进行监视key

持久化:

RDB:指定的时间将内存的数据写入磁盘。(默认开启的)

配置文件配置:

save 秒 次数。

dbflenam dump.rdb保存的数据文件

dir ./保存的位置

AOF:

把之前执行过的命令记录下来,启动时重新执行一遍

配置文件:

appendonly默认为on。改为yes开启

appenfilename名字。文件名

写入命令的策略:

appenfsync no ->隔30秒同步一次

  always ->每次都同步

everysec ->每一秒同步一次

redis集群:

主从复制:

主负责写数据,同时把数据同步到从的机器上。

方式之一:

配置文件配置如下:

主:

include

daemonize yes ->后台运行

port 6380 ->端口

pidfile /var/run/redis_6380.pid

logfile 6380.log

dbfilename dump6380.rdb

从:

daemonize yes ->后台运行

port 6381 ->端口

pidfile /var/run/redis_6381.pid

logfile 6381.log

dbfilename dump6381.rdb

slavof 主的ip 主的端口

命令:info replication 查看信息

如果主机器挂掉后,可以使用冷处理的方式(手动方式)处理:

提升某一台从机器为主:slaveof no one

然后其他的从机器挂过去:slaveof ip号 端口

高可用哨兵

当主挂掉后自动的提升某一台从为主,其他的从自动的挂过去。

sentinel.conf配置文件名

启动哨兵: ./redis-sentinel ../sentinel.conf

配置文件的修改:

port 端口号

sentinel monitor 名字

需要监控的redis的ip 端口 2(投票数)。

什么是投票数:
如果启动了三个哨兵来监控主机器(一般启动多个,因为哨兵也会挂掉),A哨兵发现redis挂掉了,B、C哨兵也会去判断是否挂掉了,三个哨兵之间会进行通讯,跟人一样进行投票决定是否提升从的权限来恢复运行,若投票数大于了一半,就通过了。

安全:

1.重命名命令的名字:

配置文件中添加:

rename-command 命令的名字 新的名字。例:flushall的命令修改

2.禁用命令:

rename-command 命令的名字 “”

3.改变端口port

4.设置访问的ip

bind xxx.xxx.xx.xx

特点:

  1. 足够简单和稳定
  2. 支持丰富的数据类型
  3. 内存读写速度快,性能优
  4. 提供持久化的支持
  5. 支持部分事务操作
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值