Redis的简单入门学习

Redis

  • 安装

    可以使用yum 安装,需先配置epel源

yum install -y redis

可以编译安装

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xf redis-5.0.5.tar.gz
cd redis-5.0.5/
make

redis可执行文件

reids-benchmark  #性能测试
redis-check-aof  #检查修复aof文件
redis-check-rdb  #检查修复rdb文件
redis-cli        #redis的客户端
redis-sentinel   #redis的集群
redis-server     #redis的服务端
redis-trib.rb    #集群管理

启动redis

./src/redis-server # 默认端口是6379 默认启动会占用终端

性能测试

./src/redis-benchmark -q
默认是100000,50个同时发起连接

连接redis

./src/redis-cli
-h ip地址
-p 端口
-s 套接字
-a 密码
-n 指定redis的库
# 命令不区分大小写

redis的数据类型

  • string

  • hash

  • list

  • set

  • zset

命令相关

ping 用来测试redis是否连通,返回值是pong

info 获取系统的信息

echo 打印内容,测试使用

quit 退出

select 切换redis的库,总共有16个 0-15

del 删除指定的一个或者多个key,不存在的的key忽略

exists 判断key是否存在,存在是1,不存在是0

expire key seconds 给指定的key设置存活时间,当key过期以后,就自动删除

ttl 查看key的存活时间,-2key不存在 -1永久不失效

keys pattern 查找所有符合pattern的key,支持通配符

move key db 移动当前的key到指定的db里面,成功返回1,失败返回0

pexpire key 给一个key设置过期时间,单位毫秒

pttl key 查看key的存活时间,单位毫秒

randomkey 随机获取一个key,但是不删除,如果数据库为空,则返回空

rename 重命名key,如果原key不存在,则报错,如果目标key存在,则覆盖

renamenx 重命名key,如果原key不存在,则报错,如果目标key存在,则不变

type 查看key所存储的数据类型,如果没有这个key,则返回none

string

  • set

    设置key value,如果key存在则覆盖,不存在则新建

    EX second 设置key的存活时间,单位是秒

    px 毫秒 设置key的存活时间,单位是毫秒

    nx 如果不存在,则新建,如果存在,则返回nil

    xx 只有键存在,才能操作

  • get

    获取key对应的value,只能获取一个,如果key存在,则返回值,如果key不存在则返回nil

  • mset

    批量创建key value对应关系,会覆盖已存在的key

  • mget

    批量获取key,如果不存在则返回nil

  • getset

    给指定的key设置新value,并返回原来的value,如果key不存在,则返回nil

  • strlen

    返回value的长度

  • append

    如果key存在则追加。如果key不存在则添加

  • incr

    将key中存在的数值加1,只能对数字有效

  • decr

    将key中存在的数值减1,只能对数字有效

  • incrby

    将key中存在的数值指定增加多少,只能对数字有效

  • decrby

    将key中存在的数值指定减少多少,只能对数字有效

  • getrange

    切片,同Python类似,不能使用步长

  • incrbyfloat

    将key中存在的数值增加指定的浮点数

list

  • lpush

    将一个或者多个value插入到列表的头部

  • lpop

    移除并返回列表key的头一个元素

  • lrange

    查看列表指定的元素,全部显示是0,-1

  • rpush

    将一个或者多个value插入到列表的尾部(最后边)

  • rpop

    删除尾部的值

  • rpushx

    将value插入的key的尾部,key必须存在才可以

  • lpush

    将value插入到key的头部,key必须存在才可以

  • lindex

    从表头开始,获取下标为index的value

  • linsert

    将value插入到key指定的元素前或者后

    before 前

    after后

    如果value不存在,则不操作

  • llen

    获取列表长度

  • lrem

    删除列表中的value

    • count>0 从表头往表尾的方向查找,删除指定的个数

    • count=0 全部删除

    • count<0 从表尾往表头的方向查找,删除指定的个数

  • lset

    替换指定的索引位置的value,如果索引超出范围,则报错

  • ltrim

    列表的切片

hash

  • hset

    给hash增加key value值

  • hlen

    获取hash的长度

  • hget

    获取某个hash里面的key的value

  • hgetall

    获取所有的键值对

  • hmset

    批量增加键值对

  • hmget

    批量获取键值对

  • hsetnx

    给指定的hash增加键值对,如果原来的field存在,则操作无效;如果不存在,则新增

  • hkeys

    获取hash表中所有的field

  • hvals

    获取hash表中所有的value

  • hdel

    删除hash表中的一个或者多个field-value

  • hexists

    判断hash表中的field是否存在,如果存在,则为1,不存在则为0

  • hincyby

    给hash表中的field增加指定的数值,只限于数字

  • hincybyfloat

    给hash表中的field增加指定的浮点,只限于数字

set

  • sadd

    给集合添加值,如果值存在,则什么都不操作,如果值不存在,则添加

  • smembers

    获取集合所有的成员

  • scard

    获取集合的个数

  • sdiff

    获取两个集合的差集,前面存在,但是后面不存在的

  • sinter

    获取两个集合的交集

  • sunion

    获取两个集合的并集

  • sismember

    判断元素是否存在集合中,如果存在,则为1,如果不存在则为0

  • smove

    将指定的元素从一个集合移动到另一个集合中,如果原集合存在则移动,如果不存在则忽略;

    如果目标集合不存在则新建

  • spop

    随机删除指定个数的元素,并把删除的元素打印出来

  • srandmember

    随机获取指定个数的元素

  • srem

    删除指定的一个或者多个元素

zset

  • zadd

    给集合添加值,如果值存在,则什么都不操作,如果值不存在,则添加

发布订阅

subscribe

订阅一个或者多个频道

publish

给指定的频道发送消息

psubscribe

订阅指定模式的频道,*代表所有

pubsub channels

查看当前活跃的频道

pubsub numsub channels

查看当前频道的订阅人数

redis配置文件

bind 127.0.0.1   # 监听的地址

protected-mode  yes # 安全模式下

port  6379 #端口号

tcp-backlog   511

timeout 0

tcp-keepalive 300

daemonize no

supervised no

pidfile /var/run/redis_6379.pid

requirepass foobared #redis设置密码

redis的主从

#只需要在从服务器上进行配置
slaveof ip地址 端口
#如果有密码的话
masterauth 密码
  • 基于异步的,平均每秒钟从服务器都会主服务器发送复制的情况
  • 一个主可以多个从
  • 不止主可以有从服务器,从也可以有从服务器
  • 复制功能也不会阻塞从服务器
  • 复制功能不会阻塞主服务器

redis的持久化

  • rdb

  • aof

rdb

优点

  • 生成二进制文件

  • 系统会默认的多长时间保存一次

  • 直接手动保存

  • 制作快照

  • 可以用作备份

  • 比较适合做灾难恢复

  • 主进程会fork一个子进程出来,子进程用来复制保存数据

缺点

  • 如果说数据需要尽量保存下来,则不适合适用rdb
  • 在数据量庞大的时候,对系统消耗过大
save 900 1   # 在900秒以内有1次更新,就会持久化
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb #数据的保存文件
dir ./  # 保存目录

aof

优点

  • 持久化更好

  • aof将所有的操作都追加到一个文件中,redis-check-aof

  • 文件易读

缺点

  • 文件会越来越大
  • aof的数据会比rdb慢,aof使用的是fsync
  • 文件易读
appendonly on
appendfilename "appendonly.aof"
appendfsync everysec

直接通过命令从rdb切换到aof

config set appendonly yes
config set save ""

redis的高可用

redis cluster

准备配置文件

#6383
bind 127.0.0.1
port 6383
daemonize yes
pidfile 6383.pid
logfile 6383.log
cluster-enabled yes
cluster-config-file node-6383.conf
cluster-node-timeout 10000
#6384
bind 127.0.0.1
port 6384
daemonize yes
pidfile 6384.pid
logfile 6384.log
cluster-enabled yes
cluster-config-file node-6384.conf
cluster-node-timeout 10000
#6385
bind 127.0.0.1
port 6385
daemonize yes
pidfile 6385.pid
logfile 6385.log
cluster-enabled yes
cluster-config-file node-6385.conf
cluster-node-timeout 10000

环境准备

安装ruby

版本必须是2.2以上

wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.4.tar.gz
tar -zxvf ruby-2.6.4.tar.gz
cd ruby-2.6.4
./configure --prefix=/opt/ruby
make && make install
配置环境变量
PATH=/opt/ruby/bin:$PATH
source /etc/profile
安装ruby依赖
gem install redis
安装命令
./src/redis-cli --cluster help
./src/redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
create 创建集群
check 检查集群
info 查看集群信息
fix 修复集群
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值