Thứ Tư, 18 tháng 8, 2021

Redis cache data C#

 

1. Cài  Redis: https://github.com/microsoftarchive/redis/releases

2. Sau khi cài Redis, mở Terminal gõ: redis-cli nếu hiện vd: 127.0.0.1:6379> là OK

3. Một số lện Redis trên Terminal:

redis-cli

info memory

config get maxmemory

config set maxmemory 128M

4. Tắt/Bật redis thì vào services.msc tới tiến trình Redis

5. Cài nuget package:  Install-Package StackExchange.Redis -Version 1.2.6

(dành cho phiên bản .NET 4.5)

Lưu ý: không dùng Package ServiceStack.Redis vì tính phí (giới hạn 6000 request)

6. Trình quản lý giao diện: cài Another-Redis-Desktop-Manager.1.4.8

7. Code demo:

public string GetRedisValue()

        {

            //-- Install-Package StackExchange.Redis -Version 1.2.6

            var cachedKey = "key";

            string value;

            // cách 1: var redisDb = RedisConnectorHelper.Connection.GetDatabase();

           //cách 2:

         using (var redis = ConnectionMultiplexer.Connect("localhost:6379"))

            {

                IDatabase db = redis.GetDatabase();

                

                if (!db.KeyExists(cachedKey))

                {

                    value = DateTime.Now.ToString();

                    //set new value

                    db.StringSet(cachedKey, value, TimeSpan.FromSeconds(18));

                }

                else

                {

                    //get cached value

                    value = db.StringGet(cachedKey);

                }

            }

            return value;

        }

+ Theo cách 1: tạo thêm 1 class: RedisConnectorHelper

/// <summary>

    /// Usage: var redisDb = RedisConnectorHelper.Connection.GetDatabase();

    /// </summary>

    public class RedisConnectorHelper

    {

        static RedisConnectorHelper()

        {

            lazyConnection = new Lazy<ConnectionMultiplexer>(() =>

            {

                return ConnectionMultiplexer.Connect("localhost");

            });

        }

        private static Lazy<ConnectionMultiplexer> lazyConnection;

        public static ConnectionMultiplexer Connection

        {

            get

            {

                return lazyConnection.Value;

            }

        }

    }