{"id":22195275,"url":"https://github.com/robertocamara/dbcache.connectionredis","last_synced_at":"2026-04-30T17:31:57.096Z","repository":{"id":20987509,"uuid":"91607659","full_name":"RobertoCamara/DbCache.ConnectionRedis","owner":"RobertoCamara","description":"Projeto para gerenciar conexão e incluir novos métodos no Redis","archived":false,"fork":false,"pushed_at":"2022-12-08T08:57:08.000Z","size":13901,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-04T10:05:37.074Z","etag":null,"topics":["csharp","exemplo","in-memory-database","in-memory-storage","netstandard","nosql","nosql-database","redis","roberto-camara"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobertoCamara.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-17T18:25:57.000Z","updated_at":"2020-06-29T16:00:34.000Z","dependencies_parsed_at":"2022-08-29T04:50:37.005Z","dependency_job_id":null,"html_url":"https://github.com/RobertoCamara/DbCache.ConnectionRedis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertoCamara%2FDbCache.ConnectionRedis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertoCamara%2FDbCache.ConnectionRedis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertoCamara%2FDbCache.ConnectionRedis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertoCamara%2FDbCache.ConnectionRedis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobertoCamara","download_url":"https://codeload.github.com/RobertoCamara/DbCache.ConnectionRedis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245355728,"owners_count":20601791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","exemplo","in-memory-database","in-memory-storage","netstandard","nosql","nosql-database","redis","roberto-camara"],"created_at":"2024-12-02T13:17:48.826Z","updated_at":"2026-04-30T17:31:57.062Z","avatar_url":"https://github.com/RobertoCamara.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ConnectionRedis\n- Exemplo de projeto utilizando o database in-memory Redis \n- Encapsula a conexão e estende métodos do Redis.\n  \n### Instalação\n```\nInstall-Package DbCache.ConnectionRedis\n\nInstall-Package DbCache.ConnectionRedis.Standard\n```\n  \n### Exemplo \n- DbRedis\n```csharp\n    class Cliente\n    {\n        public string Cnpj { get; set; }\n        public Telefone Telefone { get; set; }\n    }\n\n    class Telefone\n    {\n        public string Numero { get; set; }\n    }\n\n    class Program\n    {\n        private static DbCache.ConnectionRedis.Persistence.DbRedis _redis = new DbCache.ConnectionRedis.Persistence.DbRedis(\"localhost\", 6379, idDb: 1);\n\n        static void Main(string[] args)\n        {\n            Cliente cliente = new Cliente { Cnpj = \"1234567989\", Telefone = new Telefone { Numero = \"2199998878\" } };\n            //Salvando ou atualizando um registro\n            //1ª opção\n            _redis.SaveOrUpdate(\"key\", cliente);\n            //2ª opção\n            _redis.SaveOrUpdate\u003cCliente\u003e(\"key\", new Cliente { Cnpj = \"1234567989\" });\n\n            //Consultando registros\n            //Objetos complexos. \n            Cliente result = _redis.GetByDeserializeObject\u003cCliente\u003e(\"1234567989\");\n\n            //Para acessar demais métodos do Redis, utilize a propriedade DatabaseContext\n            string ex1 = _redis.DatabaseContext.StringGet(\"teste\");\n            long ex2 = _redis.DatabaseContext.ListLength(\"key\");\n        }\n    }\n```\n\n### To use single instance:\n- DbRedisSingleInstance\n\n### Configuration\n- Adicione as chaves no arquivo de configuração da sua aplicação\n```xml\n\u003cappSettings\u003e\n    \u003cadd key =\"REDIS_HOST\" value=\"localhost\"/\u003e\n    \u003cadd key=\"REDIS_PORT\" value=\"6379\"/\u003e\n    \u003cadd key=\"REDIS_ID_DATABASE\" value=\"1\"/\u003e\n   \u003cadd key=\"REDIS_PASSWORD\" value=\"SuaSenha\"/\u003e\n  \u003c/appSettings\u003e\n```\n\n### Exemplo \n- DbRedisSingleInstance\n```csharp\nclass Cliente\n    {\n        public string Cnpj { get; set; }\n        public Telefone Telefone { get; set; }\n    }\n\n    class Telefone\n    {\n        public string Numero { get; set; }\n    }\n\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            try\n            {\n                Cliente cliente = new Cliente { Cnpj = \"1234567989\", Telefone = new Telefone { Numero = \"2199998878\" } };\n                //Salvando ou atualizando um objeto complexo\n                //1ª opção\n                DbRedisSingleInstance.DatabaseContext.SaveOrUpdate(\"1234567989\", cliente);\n                //2ª opção\n                DbRedisSingleInstance.DatabaseContext.SaveOrUpdate\u003cCliente\u003e(\"010101010\", new Cliente { Cnpj = \"010101010\", Telefone = new Telefone { Numero = \"2122212123\" } });\n\n                //Consultando Objetos complexos\n                Cliente result = DbRedisSingleInstance.DatabaseContext.GetByDeserializeObject\u003cCliente\u003e(\"1234567989\");\n                Console.WriteLine($\"***Consultando Objetos complexos*** \\r\\n Cnpj: {result.Cnpj} - Telefone: {result.Telefone.Numero}\");\n                \n                //Utilizando demais métodos do Redis\n                DbRedisSingleInstance.DatabaseContext.StringSet(\"dataHora\", DateTime.Now.ToString(\"dd/MM/yyyy HH:mm:ss ffff\"));\n                string ex2 = DbRedisSingleInstance.DatabaseContext.StringGet(\"dataHora\");\n\n                Console.WriteLine($\"\\r\\n***Consultando Objetos simples*** \\r\\n dataHora: {ex2}\");\n\n                Console.ReadKey();\n            }\n            catch (Exception ex)\n            {\n                Console.WriteLine(ex.InnerException.Message);\n                Console.ReadKey();\n            }\n\n        }\n    }\n```\n### Exemplo \n- DbRedisMultiServer\n```csharp\n\nclass Cliente\n    {\n        public string Cnpj { get; set; }\n        public Telefone Telefone { get; set; }\n    }\n\n    class Telefone\n    {\n        public string Numero { get; set; }\n    }\n\n\n    class Program\n    {\n        static DbRedisConfig dtoServer1 = new DbRedisConfig\n        {\n            RedisHost = \"Ip_Host1\",\n            RedisPort = 6379,\n            RedisPassword = \"SenhaRedis\",\n            AllowAdmin = true,\n            RedisIdDatabaseDefault = 4\n        };\n\n        static DbRedisConfig dtoServer2 = new DbRedisConfig\n        {\n            RedisHost = \"Ip_Host2\",\n            RedisPort = 6379,\n            RedisPassword = \"SenhaRedis\",\n            AllowAdmin = true\n        };\n               \n\n        private static DbRedisMultiServer _redisServer1 = DbRedisMultiServer.GetInstance(dtoServer1);\n        private static DbRedisMultiServer _redisServer2 = DbRedisMultiServer.GetInstance(dtoServer2);\n\n        static void Main(string[] args)\n        {\n            while (true)\n            {\n                Console.WriteLine(\"1 - Gerar Cache(Server 1) \\r\\n2 - Gerar Cache Other Database(Server 1) \\r\\n3 - Gerar Cache(Server 2) \\r\\n4 - Obter Todas as Keys(Server 1) \\r\\n5 - Deletar todas as keys(Server 2) \\r\\nQ - Quit\");\n                var key = Console.ReadKey();\n                Console.WriteLine();\n\n                switch (key.Key)\n                {\n                    case ConsoleKey.D1:\n                    case ConsoleKey.NumPad1:\n                        GenerateCacheServer1();\n                        break;\n\n                    case ConsoleKey.D2:\n                    case ConsoleKey.NumPad2:\n                        GenerateCacheServer1_OtherDb();\n                        break;\n\n                    case ConsoleKey.D3:\n                    case ConsoleKey.NumPad3:\n                        GenerateCacheServer2();\n                        break;\n\n                    case ConsoleKey.D4:\n                    case ConsoleKey.NumPad4:\n                        GetAllDatabaseKeysServer1();\n                        break;\n\n                    case ConsoleKey.D5:\n                    case ConsoleKey.NumPad5:\n                        DeleteAllDatabaseKeysServer2();\n                        break;\n\n                    case ConsoleKey.Q:\n                        return;\n\n                    default:\n                        Console.WriteLine(\"Unknown input. Please try again.\");\n                        break;\n                }\n            }\n        }\n        \n        private static void GenerateCacheServer1()\n        {\n            try\n            {\n                Console.WriteLine(\"Serviço disponível: \" + _redisServer1.RedisIsAvailable);\n\n                string cnpj = Guid.NewGuid().ToString();\n\n                Cliente cliente = new Cliente { Cnpj = cnpj, Telefone = new Telefone { Numero = \"2199998878\" } };\n                //Salvando ou atualizando um objeto complexo\n                //1ª opção\n                _redisServer1.DatabaseContext().SaveOrUpdate(cnpj, cliente);\n\n                //Consultando Objetos complexos\n                Cliente result = _redisServer1.DatabaseContext().GetByDeserializeObject\u003cCliente\u003e(cnpj);\n                Console.WriteLine($\"***Consultando Objetos complexos*** \\r\\n Cnpj: {result?.Cnpj} - Telefone: {result?.Telefone.Numero}\");\n\n                //Utilizando demais métodos do Redis\n                string key = Guid.NewGuid().ToString();\n                _redisServer1.DatabaseContext(3).StringSet(key, DateTime.Now.ToString(\"dd/MM/yyyy HH:mm:ss ffff\"));\n                string ex2 = _redisServer1.DatabaseContext(3).StringGet(key);\n\n                Console.WriteLine($\"\\r\\n***Consultando Objetos simples*** \\r\\n dataHora: {ex2}\");\n\n            }\n            catch (Exception ex)\n            {\n                Console.WriteLine(ex.Message);\n                Console.ReadKey();\n            }\n        }\n\n        private static void GenerateCacheServer1_OtherDb()\n        {\n            try\n            {\n                Console.WriteLine(\"Serviço disponível: \" + _redisServer1.RedisIsAvailable);\n\n                string cnpj = Guid.NewGuid().ToString();\n\n                Console.WriteLine(\"Utilizando outro Database do Server 1\");\n\n                Cliente cliente = new Cliente { Cnpj = cnpj, Telefone = new Telefone { Numero = \"2199844452\" } };\n                _redisServer1.DatabaseContext(4).SaveOrUpdate\u003cCliente\u003e(key: cnpj, value: cliente);\n\n                Cliente result = _redisServer1.DatabaseContext(4).GetByDeserializeObject\u003cCliente\u003e(cnpj);\n                Console.WriteLine($\"***Consultando Objetos complexos*** \\r\\n Cnpj: {result.Cnpj} - Telefone: {result.Telefone.Numero}\");\n            }\n            catch (Exception ex)\n            {\n                Console.WriteLine(ex.Message);\n                Console.ReadKey();\n            }\n        }\n\n        private static void GetAllDatabaseKeysServer1()\n        {\n            var keys = _redisServer1.GetAllDatabaseKeys();\n            Console.WriteLine(\"\\r\\nObtendo todas as chaves do banco 3 - Server 1\\r\\n\");\n            foreach (var item in keys)\n            {\n                Console.WriteLine(item);\n            }\n            Console.WriteLine(\"*********************************************************\");\n        }\n\n        private static void DeleteAllDatabaseKeysServer2()\n        {\n            Console.WriteLine(\"Deletando os registros.\");\n            _redisServer2.DeleteAllDatabaseKeys(2);\n        }\n\n        private static void GenerateCacheServer2()\n        {\n            try\n            {\n                Console.WriteLine(\"Serviço disponível: \" + _redisServer2.RedisIsAvailable);\n\n                string cnpj = Guid.NewGuid().ToString();\n\n                Cliente cliente = new Cliente { Cnpj = cnpj, Telefone = new Telefone { Numero = \"2199844452\" } };\n                _redisServer2.DatabaseContext().SaveOrUpdate\u003cCliente\u003e(key: cnpj, value: cliente);\n\n                Cliente result = _redisServer2.DatabaseContext(2).GetByDeserializeObject\u003cCliente\u003e(cnpj);\n                Console.WriteLine(\"Utilizando outro Servidor Redis\");\n                Console.WriteLine($\"***Consultando Objetos complexos*** \\r\\n Cnpj: {result.Cnpj} - Telefone: {result.Telefone.Numero}\");\n            }\n            catch (Exception ex)\n            {\n                Console.WriteLine(ex.Message);\n                Console.ReadKey();\n            }\n        }\n    }\n\n```\n  \n### Referências\n- Download Redis para windows (https://github.com/MSOpenTech/redis/releases)\n- MsOpenTech (https://github.com/MSOpenTech/redis)\n- StackExchange.Redis (https://github.com/StackExchange/StackExchange.Redis)\n- Redis (https://redis.io/)\n- Manager Redis (https://redisdesktop.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertocamara%2Fdbcache.connectionredis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertocamara%2Fdbcache.connectionredis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertocamara%2Fdbcache.connectionredis/lists"}