发掘Redis_v1.0.0

v1.0.0

简介

查看redis中文网文档

场景

队列

  • 天生单线程适合队列

秒杀

核心:原子性,依次加减库存,而不重复

部署

Docker版

获取镜像并启动

  • 简单启动
docker run -d --name redis-cc-dev redis:5.0.9
  • 脚本:
    使用本地redis配置文件启动,便于维护
# 目录
sudo mkdir -p /home/app/redis;cd /home/app/redis;
# 挂载:从镜像获取配置文件,放置于本地(宿主机),并启动
sudo git clone https://gitee.com/mirrors/redis
# 然后拷贝redis.conf到/home/app/redis/redis.conf
# 启动 
docker run -d \
-v /home/app/redis/redis.conf:/usr/local/etc/redis/redis.conf \
-p 6379:6379 \
--name redis-cc-dev \
--network cc-dev \
--ip 172.19.0.6 \
redis:5.0.9 \
redis-server \
/usr/local/etc/redis/redis.conf
# 注意:/home/app/redis/redis.conf是宿主机文件

安装包安装启动

# 在根目录执行make等命令,如果报错-bash: make: command not found,则安装make:yum -y install gcc automake autoconf libtool make,此时需要联网,注意yum源配置国内镜像
make && make install
# make完成后,进行测试 测试不是必须
cd src && make test

test后,如果如下图所示,则需要安装tcl
在这里插入图片描述

sudo yum -y install tcl # ps:问题:安装之后还是报上述错误,若redis-cli.c没有被编译成redis-cli,则是忘了执行make install

在合适目录新建redis/bin和redis/etc目录,将redis-server(在src目录)和redis-cli(在src目录)拷贝至bin,将redis.conf(在根目录)拷贝至etc
给命令设置环境变量或软连接,略
启动:注意相对路径,最好用磁盘路径

./redis-server /../redis.conf
# 与客户端断开
redis-cli shutdown # 慎用
  • 测试
./redis-cli [--raw防止中文乱码]-h 127.0.0.1 -p 6379
keys *

测试成功,说明启动成功,但是并不能代表可以局域网互访:
在这里插入图片描述

开放内网互访:
配置redis.conf,bind改为bind 192.168.4.93
完成。

配置
普通使用
命令
# 查看版本号
redis-server -v

Redis发布|订阅模式

springBoot版

  • 配置类 RedisListenerConfig.java
@Configuration
public class RedisSubscribeConfig {
    /**
     * 监听器是一个类
     *
     * @param connectionFactory
     * @param listenerAdapter
     * @return
     */
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
                                            MessageListenerAdapter listenerAdapter2
    ) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);

        // addMessageListener可以多次
        container.addMessageListener(listenerAdapter2, new PatternTopic(topic样式));

        return container;
    }


    /**
     * 参数:具体接收消息的类
     * 消息监听器适配器,绑定消息处理器,利用反射技术调用消息处理器的业务方法
     *
     * @param redisReceiver
     * @return
     */
    @Bean
    MessageListenerAdapter listenerAdapter(RouteHandler redisReceiver) {
        return new MessageListenerAdapter(redisReceiver, "subscribe");
    }

    //使用默认的工厂初始化redis操作模板
    @Bean
    StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
        return new StringRedisTemplate(connectionFactory);
    }
}
  • 消息生产者
@Autowired
private StringRedisTemplate stringRedisTemplate;
... ...
stringRedisTemplate.convertAndSend(通道名称-即topic, 字符串消息-对应上文的stringRedisTemplate);
  • 消息订阅者的订阅函数
public void subscribe(String message) {
 。。。 。。。// 消息用途
}

消息类型

  • 上文只是简单的字符串类型的消息的发布|订阅。实际场景中,消息类型、数据结构是各种各样的。

Node.js版

Python版

待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值