Linux 下安装与使用 Redis

目录

1. Linux 下安装 Redis

2. Redis 启动

3. springboot 连接 Linux 远程 redis

4. 五大数据类型

4.1 Stirng类型

4.2 List类型

4.3 set集合

4.4 hash集合

4.5 Zset集合(有序set 集合)

5. 三种特殊数据类型.

5.1 geospatial (地理位置)

5.2 Hyperloglog (基数统计)

5.3 Bitmaps (位存储)

6. Redis 事务

7. Redis 乐观锁

8. Redis发布订阅

9. Redis主从复制

10. 哨兵模式


1. Linux 下安装 Redis

  • 本人使用虚拟机 CenOS 7 64位,搭配 MobaXterm 操作

安装步骤:

  1. 在 Redis 官网下载 Linux 版本的解压包

  2. 在Linux 中 home 目录下建一个新的文件夹,把下载好的解压包放进去

  3. 把解压包移动到 /opt目录下 :mv xxx(解压包名) /opt

  4. 解压 压缩包 : tar -zxvf xxx

  5. 在第6步前需要安装 yum,否则不能使用yum命令 ,安装好后 gcc -v 查看版本

  6. 进入 解压出来的文件目录 cd redis-5.0.8 ,运行安装编译程序 :yum install gcc-c++

  7. 编译: make , 再进行安装:make install ,redis默认安装路径 usr/local/bin

  8. 在 usr/local/bin 目录下新建文件夹: mkdir kconfig(随意起文件名)

  9. 将 redis 配置文件 redis.conf 复制一份到 usr/local/bin/kconfig 目录下,

    cp /opt/xxx(目录名)/redis.conf usr/local/bin/kconfig ,因为我们要用自己改的配置文件来启动 redis

  10. redis默认不是后台启动。需修改配置文件redis.conf。vim redis.conf 把

    daemonize no 改为 yes。:wq退出

2. Redis 启动

  • redis 默认安装路径 usr/local/bin

    cd /usr/local/bin                # 进入 /usr/local/bin 目录
    redis-server kconfig/redis.conf # 启动服务,用我们自己改的配置文件 redis.conf 启动
    redis-cli -p 6379               # 连接客户端
    ​
    ps -ef|grep redis               # 查看 redis 的进程是否开启 
    shutdown                        # 关闭 redis 服务,exit 退出 
    redis-cli shutdown              # 关闭 redis 客户端

3. springboot 连接 Linux 远程 redis

  • 3.1 需要修改 redis.conf 配置   

requirepass 123456      # 设置 redis 密码 123456(随意设置),第786行
daemonize yes           # 把 daemonize 属性改为 yes,第222行
bind 127.0.0.1          # 注销掉这行代码,第69行
protected-mode no       # 把 protected-mode 属性改为 no,第88行
(跳到786行 跳行快捷键 :786)
    
# 还需要关闭 Linux 系统中的防火墙
systemctl stop firewalld.service    # 关闭防火墙
systemctl disable firewalld.service # 禁止防火墙启动
  • 3.2 配置 application.properties

spring.redis.host=192.168.111.129   # 这个 ip 为我的虚拟机中 Linux 系统的 ip
spring.redis.port=6379
spring.redis.password=123456

4. 五大数据类型

4.1 Stirng类型

exists k1                   # 判断某个key是否存在
append k1 hello             # 追加字符串,如果当前的key不存在,就相当于set
strlen k1                   # 获取字符串的长度
incr views                  # 自增1,浏览量增加1
decr views                  # 自减1, 浏览量减1
incrby views 10             # 可以设置步长,指定增量  i+=5
decrby views 5              # i-=5
getrange k1 0 3             # 获取字符串[0,3]
getrange k1 0 -1            # 获取全部的字符串
setrange k1 1 a             # 替换指定位置开始的字符串 下标为 1 的 替换为 a
setex k3 30 hello           # 设置k3的值为 hello ,30 秒后过期时间
setnx k1 redis              # 如果 k1 不存在,创建 k1 ,如果 k1 存在,则失败
mset k1 v1 k2 v2 k3 v3      # 同时设置多个值
mget k1 k2 k3               # 同时获取多个值
msetnx k1 v1 k4 v4          # msetnx 是一个原子操作,要么一起成功,要么一起失败
mset user:1:name zhangsan user:1:age 2  # user:{id}:{filed}
getset k1 hello             # 如果存在值,则返回原来的值,并设置新的值。如果不存在值,则返回 nil,并且设置新的值

4.2 List类型

lpush list one              # 将一个值或者多个值,插入到列表头部(左) 读都是从左往右
lrange list 0 -1            # 获取 list 中的值
lrange list 0 1             # 通过区间获取具体的值
rpush list one              # 将一个值或者多个值,插入到列表尾部(右)
lpop list                   # 移出 list 的第一个元素(左)
rpop list                   # 移出 list 的最后一个元素(右)
lindex list 0               # 获取下标为 0 的元素
llen list                   # 获取长度
lrem list 1 one             # 移出指定的值,移除 1 个,为 one 的值
ltrim list 1 2              # 通过下标截取指定的长度,截取留下下标为 1-2 的元素
rpoplpush list1 list2       # 移除 list1 列表的最后一个元素,将他移到 lsit2 列表中
lset list 1 value           # 将 下标为 1 的值更新为 value,如果不存在当前下标值,则报错
linsert list before 2 3     # 在值为2 的前面,插入3。 before 改为 after 就是在2后面插入

4.3 set集合

sadd myset 1 2 3            # 集合中添加元素
smembers myset              # 查看集合中的元素
sismember myset xiaofan     # 判断某个值是不是在集合中,判断 xiaofan 是否存在 myset 中
scard myset                 # 获取 set 集合中元素的个数
srem myset hello            # 删除 set 中的指定的元素,移除 hello
srandmember myset 2         # 随机抽取 2 个元素
spop myset 1                # 随机删除一些 set 集合中的值,1个
smove set1 set2 a           # 把 a 元素 从set1 移动到 set2
sdiff set1 set2             # 查看 set1 和 set2 的差集
sinter set1 set2            # 查看 set1 和set2 的交集
sunion set1 set2            # 查看 set1 和 set2 的并集

4.4 hash集合

hset myhash f1 hello                # set一个具体的值 key-value,myhash -- <f1,hello>
hget myhash f1                      # 获取一个字段值
hmset myhash f1 hello1 f2 world     # 设置多个 key-value,myhash -- <f1,hello> <f2,world>
hmget myhash f1 f2                  # 获取多个字段值
hgetall myhash                      # 获取全部数据
hdel myhash f1                      # 删除某个指定的 key 字段,对应的,删除 myhash 中 f1
hlen myhash                         # 获取 hash 表键值对的数量,
hexists myhash f1                   # 判断 myhash 中 f1 字段 是否存在
hkeys myhash                        # 获取 myhash 中所有的 key
hvals myhash                        # 获取 myhash 中所有的 value
hincrby myhash field3 2             # 增量运算
hsetnx myhash field4 value4         # 如果不存在设置成功,如果存在则设置失败

4.5 Zset集合(有序set 集合)

zadd myset 1 one 2 two              # 添加值,第 1 个位置 加入one。第 2 个位置加入 two
zrange myset 0 -1                   # 获取所有元素
zadd salary 250 a 500 b 200 c       # 添加用户其数值元素, 薪水 salary ,250 是 a的薪水,500是 b的,200是 c 的
zrangebyscore salary -inf +inf      # 显示全部用户,从小到大排序出用户
zrevrangebyscore salary +inf -inf   # zrevrangebyscore 从大到小
zrevrangebyscore salary +inf -inf withscores    # 显示全部用户并且附带值
zrem salary a                       # 移出某个元素,移除集合 salary 中的元素 a
zcard salary                        # 获取有序集合中的个数
zcount myset 1 3                    # 获取指定区间之间的成员数量,获取第 1 个 到第 3 个位置区间的成员个数

5. 三种特殊数据类型.

5.1 geospatial (地理位置)

geoadd china:city 116.40 39.90 beijing          # 添加城市经纬度
geopos china:city beijing                       # 获取城市经纬度
geodist china:city beijing shanghai km          # 获取北京和上海的距离。mi 为英里,ft 为英尺。
georadius china:city 110 30 1000 km             # 获取经纬度为110 30 ,半径 1000km 以内的城市位置 
georadiusbymember china:city shanghai 500 km    # 获取上海,半径 500km 内的城市位置
georadius china:city 110 30 1000 km withcoord   # 带着经纬度展示
georadius china:city 110 30 1000 km withdist count  1  # 带着距离展示展示1个
geohash china:city beijing chongqing            #该命令将返回11个字符的Geohash字符串,如果两个字符串越接近,表示距离越近
​
# GEO 底层的实现原理其实就是 Zset,我们可以使用 Zset 命令来操作 geo 
zrange china:city 0 -1      # 获取所有元素
zrem china:city xian        # 删除西安元素

5.2 Hyperloglog (基数统计)

pfadd key1 a b c d e f i j      # 创建第一组元素 key1
pfadd key2 f i j k l m n        # 创建第一组元素 key2
pfmerge key3 key1 key2          # 合并第一组元素和第二组元素 -> key3
pfcount key3                    # 统计元素个数

5.3 Bitmaps (位存储)

setbit sign 0 0     # 设置数据,1 代表打卡,0 代表不打卡
setbit sign 1 1
setbit sign 2 0
getbit sing 0       # 获取,第一天 是否打卡
bitcount sing       # 统计 打开天数,统计 为 1 的天数

6. Redis 事务

  • redis 事务具有:一次性、顺序性、排他性

  • 开启事务:

multi           # 开启事务
set k1 v1       # 命令程序放入队列
set k2 v2           
set k3 v3
get k3
set k4 v4
exec            # 执行事务
​
discard         # 取消事务 
  • 编译型异常,代码命令写错,所有的命令都不会执行。

  • 运行时异常,如 1/0,代码没问题,但是运行时命令会报错,其他命令正常执行。

  • 这时候 我们可以加乐观锁。

7. Redis 乐观锁

  • 开启乐观锁

    set money 100       # 正常执行
    set out 0
    watch money         # 监视 money 对象
    ​
    multi               # 开启事务
    decrby money 20     # money 减 20
    incrby out 20       # out 加 20
    exec                # 执行事务,在此之前,如果 money 有了变化,就执行失败
    ​
    # 数据期间没有发生变化,这个时候就正常执行成功!如果事务未结束期间有数据变化,则执行失败

8. Redis发布订阅

  • 订阅端

    127.0.0.1:6379>subscribe lan                # 订阅一个频道 lan
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "lan"
    3) (integer) 1
    # 等待消息
    1) "message"    # 消息
    2) "lan"        # 消息频道
    3) "hello lan"  # 消息内容
  • 发送端

    127.0.0.1:6379>publish lan "hello lan"      # 发布者来 发送 hello 到 lan 频道

9. Redis主从复制

  • 默认下所有服务都是主库,只配置从库,不用配置主库!

    • info replication # 查看当前库的信息

  • 复制两份 redis.conf 配置文件,修改两份从库配置文件

    92行     # 修改端口号。
    244行    # 修改 pidfile /var/run/redis_端口号.pid。
    257行    # 修改日志文件名 logfile “xxx.log”。把每个服务的日志文件名都改成不一样
    339行    # 修改 dbfilename “xxx.rdb”。持久化文件也要改
    ​
    slaveof 127.0.0.1 6379      # 找老大,slaveof  老大ip地址 老大端口号
    ​
    # 或者直接在配置文件里改
    replicaof 主机ip 主机端口号
    ​
    masterauth 主机密码
    ​
    如果主机设了密码 小弟需要设置:masterauth 主机密码

10. 哨兵模式

sentinel.conf                                # vim 配置哨兵配文件,名字一定要是这个
sentinel montitor 被监听的名称 host port 1    # 在配置文件里写 后面的数字 1 ,代表主机挂了,从机投票看让谁接替为主机
sentinel montitor myredis 127.0.0.1 6379 1  # 文件里写  监听 ip地址 端口号 起名为myredis
sentinel auth-pass  <主机名字> <password>    # 监听的从机有密码的 需要配置  
redis-sentinel kconfig/sentinel.conf        # 启动 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux下离线安装Redis,可以按照以下步骤进行操作: 1. 首先,确保已经安装了gcc-c++编译器。可以使用以下命令安装: ``` rpm -Uvh gcc-c++-<version>.rpm ``` \[1\] 2. 下载Redis安装包,并解压缩: ``` tar -zxf redis-<version>.tar.gz ``` \[1\] 3. 进入Redis源代码目录,并进行编译: ``` cd redis-<version> make ``` \[1\] 4. 安装Redis到指定目录: ``` make PREFIX=/usr/local/redis install ``` \[2\] 5. 复制Redis的配置文件到/etc/目录: ``` cp redis.conf /etc/ ``` \[3\] 6. 修改Redis的配置文件: ``` vi /etc/redis.conf ``` \[3\] 7. 启动Redis服务: ``` redis-server /etc/redis.conf ``` \[3\] 这样,你就成功在Linux下离线安装Redis。请根据实际情况替换命令中的版本号和文件名。 #### 引用[.reference_title] - *1* *2* [Linux下离线安装redis全教程(含资源)](https://blog.csdn.net/weixin_43464964/article/details/123847237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [linux服务器上离线安装redis](https://blog.csdn.net/u011066470/article/details/119109215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值