14 Ekim 2019 Pazartesi

Redis (Remote Dictionary Server) - Key-Value Store

Giriş
Redis'e bağlanmak için Jedis, Luttuce, Redisson kullanılabilir. Redis 2009 yılının başlarında hayat bulan bir proje. Halen de bayağı hararetli günler yaşıyor.

DragonFly
Açıklaması şöyle
Dragonfly is drop in replacement of Redis with a thread per core design
Redis Labs
Redis Labs bulutta çalışan Redis. Açıklaması şöyle
Redis Labs has a commercial offering of Redis and part of this commercial offering is that their Redis ‘environment’ runs on all cores; similar to DragonflyDB.

1. Redis Kurulum
Redis Kurulum yazısına taşıdım.

redis-cli Komutu
redis-cli Komutu yazısına taşıdım.

redis-benchmark Komutu
Tüm seçenekler burada
Örnek
Şöyle yaparız
$ redis-benchmark -t set,lpush -n 100000 -q
SET: 97087.38 requests per second LPUSH: 101112.23 requests per second
Redis Commander
Redis için GUI. Açıklaması şöyle
redis-commander is a GUI for redis and bind to port 8081.
Redis ve Thread
Açıklaması şöyle. Redis performans problemi için buraya bakabilirsiniz. Proxy Service: twemproxy ve Client-side sharding: redis-shard ve Redis Enterprise çözümlerinden bahsediyor
Redis trades off memory to achieve speed, it performs all client operations in a single thread & usually operations are very fast.
Redis Database Object
Açıklaması şöyle
You can have many databases configured in redis. Redis API clients & cli commands interact with this instance.
Bellek Dolarsa
Redis Data Eviction yazısına taşıdım

En Büyük Veri
Açıklaması şöyle
Redis can store the data of size up to 512 MB (string values)
Redis Data Persistence (Veri Kalıcılığı)
Redis Data Persistence yazısına taşıdım

2. Redis İle Saklanabilen Veri Yapıları
Açıklaması şöyle.
The original intention of Redis (or any key-value store) was to have a particular key, or identifier, for each individual piece of data. Redis quickly stretched this concept with data types, where a single key could refer to multiple (even millions of) pieces of data. As modules came to the ecosystem, the idea of a key was stretched even further because a single piece of data could now span multiple keys (for a RediSearch index, as an example). So, when asked if Redis is a key-value store, I usually respond with "it descends from the key-value line of databases" but note that, at this point, it's hard to justify Redis as a key-value store alone.
Açıklaması şöyle.
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. It supports list, hash, sets, etc.
Redis'in en önemli konusu sağladığı veri yapıları. Bunlar şöyle.
Strings, Bitmaps, Bitfield, Hashes, Lists, Sets, Sorted Sets, Geospatial Indexes, Hyper Loglog

2.1 Key Value
Redis - Key-Value Veri Yapısı yazısına taşıdım

2.2 String
Redis - String Veri Yapısı yazısına taşıdım

2.3 List
Redis - List Veri Yapısı yazısına taşıdım

2.4 Set
Key olarak string, set elemanları olarak string kullanılır

2.5 Hash
Hash Veri Yapısı yazısına taşıdım

2.6 Sorted Set Veri Yapısı
Redis - Sorted Set yazısına taşıdım

2.7 Hyper Loglog Veri Yapısı - Probabilistic Data Structures
Açıklaması şöyle.
The name comes from the fact that you can estimate the cardinality of a set with cardinality Nmax using just loglog(Nmax) + O(1) bits.
Açıklaması şöyle
Used to estimate set cardinality, HyperLogLog is memory-efficient and can approximate the count of unique elements in large datasets. Practical applications range from web analytics and unique visitor counts to detecting duplicate log entries.Redis commands for HyperLogLog include:
Şu komutları destekler.
PFADD - Set'e ekleme yapar
PFCOUNT - Setteki elemanların sayısını verir
PFMERGE - İki seti birleştirir

2.8 Stream Veri Yapısı
Stream Veri Yapısı yazısına taşıdım

2.9 Distributed Lock
Distributed Lock yazısına taşıdım

2.10 Secondary Index
Açıklaması şöyle
Redis has no secondary indexes, but there are some ways to imitate them.

The order number of the element can be used as a secondary key in ordered collections.

Otherwise, hashmaps can be used with their key considered as the data index.
2.11 Secondary Index
Geospatial Indexes yazısına taşıdım

2.12 Bloom ve Cuckoo Filter
Açıklaması şöyle
The Bloom Filter checks set membership efficiently, while the Cuckoo filter is similar but also allows deletions. Bloom filters are preferable for insertion-heavy tasks due to superior scalability.

Redis commands for the Bloom Filter include:

BF.RESERVE – Create a new Bloom filter.
BF.ADD – Add element to a Bloom filter.
BF.EXISTS – Verify existence of an element.
BF.MADD – Add multiple elements to a Bloom filter.
BF.INSERT – Add element to a Bloom filter, creating it if it does not exist (combines BF.RESERVE and BF.MADD).
And for the Cuckoo Filter:

CF.RESERVE – Create a new Cuckoo filter.
CF.ADD – Add element to a Cuckoo filter.
CF.EXISTS – Verify existence of one or more elements.
CF.COUNT – Count the number of occurrences of an element.
2.13 TOP K
Açıklaması şöyle
Tracks and retrieves the most frequent elements. Suitable for real-time analytics and trending analysis.

Redis commands for Top-K include:

TOPK.RESERVE – Create a new Top-K data structure.
TOPK.ADD – Add one or more items to a Top-K data structure, or increment the count if it already exists.
TOPK.LIST – Retrieve the top items from a Top-K data structure.
TOPK.QUERY – Check for existence of one or more items in a Top-K data structure.
TOPK.INCRBY – Increment the count of one or more items in a Top-K data structure.
2.14 Count-min Sketch
Açıklaması şöyle
Estimates element frequency in a dataset. Ideal for traffic analysis and frequency counting in various applications.

Redis commands for Count-Min Sketch include:

CMS.INITBYDIM (or CMS.INITBYPROB) – Create a new Count-Min Sketch data structure.
CMS.INCRBY – Increment the count of one or more items in a Count-Min Sketch data structure.
CMS.QUERY – Check for existence of one or more items in a Count-Min Sketch data structure.

3. Jedis
Jedis API yazısına taşıdım. Jedis diğer iki kütüphaneye göre daha az sağlıyor ancak daha küçük ve hızlı. Açıklaması şöyle
However, it is small and considerably faster than the other two.
Jedis ve Spring'i birlikte kullanmak için JedisConnectionFactory yazısına bakabilirsiniz.

4. Lettuce
Jedis'ten farklı olarak asenkron çalışabilir. Lettuce ve Spring'i birlikte kullanmak için LettuceConnectionFactory yazısına bakabilirsiniz.

5. Redisson
Redisson yazısına taşıdım

Kullanım Çeşitleri
Redis şöyle kullanılabilir.
- Redis standalone mode
- Sentinels
- A cluster with shards
Standalone Mode
Standalone Mode yazısına taşıdım

Sentinel Mode
Sentinel Mode yazısına taşıdım

Cluster Mode With Shards
Cluster Mode With Shards yazısına taşıdım

Cache Stratejileri - Cache Access Patterns
Cache Stratejileri - Cache Access Patterns yazısına taşıdım

Transaction
Redis Transaction yazısına taşıdım



Hiç yorum yok:

Yorum Gönder