README.md

    ZIO Redis

    ZIO Redis is a ZIO native Redis client.

    The client is still a work-in-progress. Watch this space!

    Experimental CI Badge Sonatype Snapshots ZIO Redis

    Introduction

    ZIO Redis is in the experimental phase of development, but its goals are:

    • Type Safety
    • Performance
    • Minimum Dependency
    • ZIO Native

    Installation

    Since the ZIO Redis is in the experimental phase, it is not released yet, but we can use snapshots:

    libraryDependencies += "dev.zio" %% "zio-redis" % "<version>"

    Example

    To execute our ZIO Redis effect, we should provide the RedisExecutor layer to that effect. To create this layer we should also provide the following layers:

    • RedisConfig — Using default one, will connect to the localhost:6379 Redis instance.
    • BinaryCodec — In this example, we are going to use the built-in ProtobufCodec codec from zio-schema project.

    To run this example we should put following dependencies in our build.sbt file:

    libraryDependencies ++= Seq(
      "dev.zio" %% "zio-redis" % "<version>",
      "dev.zio" %% "zio-schema-protobuf" % "0.3.0"
    )
    import zio._
    import zio.redis._
    import zio.schema.codec._
    
    object ZIORedisExample extends ZIOAppDefault {
      val myApp: ZIO[Redis, RedisError, Unit] = for {
        redis <- ZIO.service[Redis]
        _     <- redis.set("myKey", 8L, Some(1.minutes))
        v     <- redis.get("myKey").returning[Long]
        _     <- Console.printLine(s"Value of myKey: $v").orDie
        _     <- redis.hSet("myHash", ("k1", 6), ("k2", 2))
        _     <- redis.rPush("myList", 1, 2, 3, 4)
        _     <- redis.sAdd("mySet", "a", "b", "a", "c")
      } yield ()
    
      override def run = myApp.provide(
        Redis.layer,
        RedisExecutor.layer,
        ZLayer.succeed(RedisConfig.Default),
        ZLayer.succeed[BinaryCodec](ProtobufCodec)
      )
    }

    Resources

    • ZIO Redis by Dejan Mijic — Redis is one of the most commonly used in-memory data structure stores. In this talk, Dejan will introduce ZIO Redis, a purely functional, strongly typed client library backed by ZIO, with excellent performance and extensive support for nearly all of Redis' features. He will explain the library design using the bottom-up approach - from communication protocol to public APIs. Finally, he will wrap the talk by demonstrating the client's usage and discussing its performance characteristics.

    Documentation

    Learn more on the ZIO Redis homepage!

    Contributing

    For the general guidelines, see ZIO contributor's guide.

    Code of Conduct

    See the Code of Conduct

    Support

    Come chat with us on Badge-Discord.

    License

    License

    项目简介

    基于ZIO的Redis客户端。

    🚀 Github 镜像仓库 🚀

    原项目 https://github.com/zio/zio-redis

    发行版本 2

    v0.2.0

    全部发行版

    贡献者 41

    全部贡献者

    开发语言

    • Scala 99.9 %
    • Shell 0.1 %