Home / Companies / Redis / Blog / May 2019

May 2019 Summaries

6 posts from Redis

Filter
Month: Year:
Post Summaries Back to Blog
Instagram's engineering blog recently discussed the concept of promisifying cached values to prevent cache misses from causing stampedes on underlying DBMS. The idea is to store a dummy value (promise) in the cache, signaling to competing requesters that someone else is preparing the data, prompting them to wait instead of overwhelming the DBMS. This concept is not new and can be achieved using Redis features like key expiration, atomic operations, and Pub/Sub. The author has implemented this approach as Redis MemoLock, which primarily relies on these three Redis features. The implementation includes a simple example in Go language and aims to provide more benefits than typically offered with read/write-through caches.
May 29, 2019 851 words in the original blog post.
The Redis University Summer Session offers four free online courses, designed to provide a manageable yet edifying learning experience for users of all skill levels. Whether exploring the magic of Redis data structures, building a real-world Java app with Redis, mastering RediSearch for full-text indexing, or diving into Streams for distributed systems and messaging, there's something for everyone in this summer session. With courses covering topics such as bit fields, geo queries, DAO design, pipelining, transactions, Lua scripting, stemming, synonyms, phonetic matching, consumer groups, and more, Redis University aims to help users unlock the full potential of Redis and make the most of their lazy summer days.
May 29, 2019 445 words in the original blog post.
The Redis SET command has some unusual features that set it apart from other commands, such as its ability to disregard the type of key and always write to it, whereas other commands will throw an error if the key already exists with a different type. This feature is useful but also potentially dangerous when not used correctly. The SET command also allows for optional arguments for expiration and existence checking, including NX and XX, which can be used to set default values or prevent accidental overwrites. Additionally, Redis understands loose typing of data types, allowing numbers to be treated as text and vice versa, which can lead to unexpected behavior if not carefully considered. Understanding these features is crucial for proper use of the SET command and its role in Redis patterns.
May 13, 2019 1,264 words in the original blog post.
The text discusses various communication patterns and tools used in distributed systems. Synchronous communication involves direct remote procedure calls between two services, which can be slow if one service is offline. Asynchronous communication allows messages to be sent even if not all participants are present at the same time, using tools like queue-based or stream-based solutions. These solutions enable independent failure and parallel processing of tasks. Redis Pub/Sub is a synchronous messaging broker that focuses on fire-and-forget delivery, while RabbitMQ defaults to reliable delivery with application-level acknowledgments. Redis Streams offer a resumable Pub/Sub system, allowing clients to resume sending messages if there's a disconnection or crash. The text also touches on event sourcing, where business models are defined as an endless stream of events and other services react to it. Event sourcing can be useful for enterprise software dealing with complex domains like customers' personal data, shipping, and more. Redis Streams and Apache Kafka are compared, with both systems being equivalent in expressiveness but differing in practical details. Redis offers a simpler solution for certain use cases, such as chat applications, while Kafka is better suited for streaming architectures and reliable systems. The text concludes by highlighting the unique design of Redis and its ability to solve hard problems with few commands.
May 03, 2019 2,506 words in the original blog post.
In the latest release of RedisGraph 1.2.0, significant enhancements have been made to its graph processing capabilities, including the ability to form multiple edges of the same type between nodes, which improves memory efficiency and reduces fragmentation. The new version also optimizes search patterns by introducing a `seek node by id` operation that runs in constant time, replacing full-scan operations with a more efficient approach. Additionally, optimizations have been made to reduce computation time when traversing large matrices, such as those resulting from search patterns containing left-to-right and right-to-left edges. These improvements aim to provide better performance and scalability for users of RedisGraph.
May 02, 2019 651 words in the original blog post.
At RedisConf19, a solution for running full-text RediSearch over nodes in RedisGraph was demonstrated. The solution allows users to search for animals and see how they are related via the biological classification system. Although the integration between RediSearch and RedisGraph is still early and not ready for production, it has potential for future use. To replicate this solution, one needs to build both RediSearch and RedisGraph based on specific branches in their respective repositories. The data set used in the demo was created by loading information about mammals from CSV files into RedisGraph. A simple UI was built using Node.js and Vue.js components, with a server running on Express.js primarily using websockets to communicate back and forth. The solution demonstrates the integration of two distinct models – graph and full-text search.
May 01, 2019 1,137 words in the original blog post.