Redis、Eureka注册中心【微服务入门】

2022/8/3 2:23:00

本文主要是介绍Redis、Eureka注册中心【微服务入门】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Redis

什么是Redis?

REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

Redis 数据类型

Redis支持五种数据类型:

  • string(字符串)
  • hash(哈希) 是一个键值(key=>value)对集合. hash 特别适合用于存储对象
  • list(列表)
  • set(集合)
  • zset(sorted set:有序集合)。

Redis常用命令

string(字符串)

127.0.0.1:6379> set hi xinchen

OK

127.0.0.1:6379> get hi

"xinchen"

Hash(哈希)

DEL hello 用于删除前面测试用过的 key,不然会报错:(error) WRONGTYPE Operation against a key holding the wrong kind of value

127.0.0.1:6379> del hello

(integer) 1

127.0.0.1:6379> get hello

(nil)

127.0.0.1:6379> hmset hello field1 "Hello" field2 "World"

OK

127.0.0.1:6379> hget hello field1

"Hello"

127.0.0.1:6379> hget hello field2

"World"

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

127.0.0.1:6379> del hi

(integer) 0

127.0.0.1:6379> lpush hi redis

(integer) 1

127.0.0.1:6379> lpush hi mongodb

(integer) 2

127.0.0.1:6379> lpush hi rabbitmq

(integer) 3

127.0.0.1:6379> lrange hi 0 10

  1. "rabbitmq"

  2. "mongodb"

  3. "redis"

Set(集合)

存成功返回1,不成功返回0

127.0.0.1:6379> del hi

(integer) 1

127.0.0.1:6379> sadd hi redis

(integer) 1

127.0.0.1:6379> sadd hi mongodb

(integer) 1

127.0.0.1:6379> sadd hi mongodb

(integer) 0

127.0.0.1:6379> sadd hi rabbitmq

(integer) 1

127.0.0.1:6379> smembers hi

  1. "rabbitmq"

  2. "redis"

  3. "mongodb"

zset(sorted set:有序集合)

添加元素到集合,元素在集合中存在则更新对应score

127.0.0.1:6379> del hi

(integer) 1

127.0.0.1:6379> zadd hi 0 redis

(integer) 1

127.0.0.1:6379> zadd hi 0 mongodb

(integer) 1

127.0.0.1:6379> zadd hi 0 rabbitmq

(integer) 1

127.0.0.1:6379> zadd hi 0 rabbitmq

(integer) 0

127.0.0.1:6379> zrangebyscore hi 0 1000

  1. "mongodb"

  2. "rabbitmq"

  3. "redis"

远程服务连接

如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。

redis-cli -h host -p port -a password

微服务

Eureka注册中心

服务发现

  • 引入eureka-client依赖
<!--eureka客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
  • 在application.yml中配置eureka地址
spring:
  application:  # eureka的服务名称
    name: orderservice
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka/
  • 在orderService中通过eureka使用服务名称代替硬编码
String url = "http://userservice/user/" + order.getUserId();
  • 在注入的RestTemplate中加入负载均衡注解
/**
     * 创建RestTemplate并注入Spring
     * @param
     * @return
     */
    @Bean
    @LoadBalanced  // 负载均衡
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }


这篇关于Redis、Eureka注册中心【微服务入门】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程