{"id":5102,"date":"2019-11-07T19:05:35","date_gmt":"2019-11-07T19:05:35","guid":{"rendered":"http:\/\/www.odbms.org\/blog\/?p=5102"},"modified":"2019-11-07T19:05:35","modified_gmt":"2019-11-07T19:05:35","slug":"on-redis-interview-with-salvatore-sanfilippo","status":"publish","type":"post","link":"https:\/\/www.odbms.org\/blog\/2019\/11\/on-redis-interview-with-salvatore-sanfilippo\/","title":{"rendered":"On Redis. Interview with Salvatore Sanfilippo"},"content":{"rendered":"<blockquote><p>\n<strong>&#8220;I think Redis is entering a new stage where there are a number of\u00a0persons that now actively daily contribute to the open source. It&#8217;s\u00a0not just &#8220;mostly myself&#8221;, and that&#8217;s great.&#8221; &#8211;Salvatore Sanfilippo<\/strong><\/p><\/blockquote>\n<p>I have interviewed\u00a0<strong>Salvatore Sanfilippo<\/strong>, the original developer of Redis.\u00a0Redis is an open source in-memory database that persists on disk.<br \/>\nRVZ<\/p>\n<p><strong>Q1.What is new in the Redis 6 release?<\/strong><\/p>\n<p> <strong>Salvatore Sanfilippo:\u00a0<\/strong>The main new features are <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/redis.io\/topics\/acl');\"  href=\"https:\/\/redis.io\/topics\/acl\" target=\"_blank\">ACLs<\/a>, <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/redis.io\/topics\/security');\"  href=\"https:\/\/redis.io\/topics\/security\" target=\"_blank\">SSL<\/a>, <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/redis.io\/topics\/benchmarks');\"  href=\"https:\/\/redis.io\/topics\/benchmarks\" target=\"_blank\">I\/O threading<\/a>, the new protocol\u00a0called <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/github.com\/antirez\/RESP3');\"  href=\"https:\/\/github.com\/antirez\/RESP3\" target=\"_blank\">RESP3<\/a>, assisted client side caching support, a ton of new\u00a0modules capabilities, new cluster tools, diskless replication, and\u00a0other things, a very long list indeed. <\/p>\n<p> <strong>Q2.Can you tell us a bit more about the new version of the Redis protocol (RESP3), what is it? \u00a0and why is it important?<\/strong> <\/p>\n<p> <strong>Salvatore Sanfilippo:\u00a0<\/strong>It&#8217;s just an <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/antirez.com\/news\/125');\"  href=\"http:\/\/antirez.com\/news\/125\" target=\"_blank\">incremental improvement<\/a> over RESP2. The main goal is to\u00a0make it more semantical. RESP2 is only able to represent arrays from\u00a0the point of view of aggregated data types. Instead with RESP3 we have\u00a0sets, hashes, and so forth. This makes simpler for client libraries to\u00a0understand how to report the command reply back to the client, without\u00a0having a conversion table from the array to the library language\u00a0target type. <\/p>\n<p> <strong>Q3.You have recently implemented a client side caching for Redis 6. What are the main benefits of this?<\/strong> <\/p>\n<p> <strong>Salvatore Sanfilippo:\u00a0<\/strong>Most big shops using Redis end having some way to memorize some\u00a0information directly into the client. Imagine a social network that\u00a0caches things in Redis, where the same post is displayed so many times\u00a0because it is about a very famous person. To fetch it every time from\u00a0Redis is a lot of useless efforts and cache traffic. So many\u00a0inevitably end creating protocols to retain very popular items\u00a0directly in the memory of the front-end systems, inside the\u00a0application memory space. To do that you need to handle the\u00a0invalidation of the cached keys. Redis new client side caching is a\u00a0server side &#8220;help&#8221; in order to accomplish this goal. It is able to\u00a0track what keys a given client memorized, and inform it when such keys\u00a0gets modified, so that the client can invalidate them. <\/p>\n<p><strong>Q4. Are there any drawbacks as well?<\/strong> <\/p>\n<p><strong>Salvatore Sanfilippo:\u00a0<\/strong>Sure, more caching layers, more invalidation, more complexity. Also\u00a0more memory used by Redis to track the client keys. <\/p>\n<p><strong>Q5. &#8220;Streams&#8221; data structure were introduced in Redis 5. What is it? How does it differ from other open source streaming framework such as Apache Pulsar or Kafka ?<\/strong> <\/p>\n<p><strong>Salvatore Sanfilippo:\u00a0<\/strong>A <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/redis.io\/topics\/streams-intro');\"  href=\"https:\/\/redis.io\/topics\/streams-intro\" target=\"_blank\">Redis stream<\/a> is basically a &#8220;log&#8221; of items, where each item is a\u00a0small dictionary composed of keys and values. On top of that simple\u00a0data structure, which is very very memory efficient, we do other\u00a0things that are more messaging and less data structure: consume a\u00a0stream via a consumer group, block for new messages, and so forth.<br \/>\nThere are use cases that can be solved with both Redis Streams and\u00a0<a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/pulsar.apache.org');\"  href=\"https:\/\/pulsar.apache.org\" target=\"_blank\">Pulsar<\/a> or <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/kafka.apache.org');\"  href=\"https:\/\/kafka.apache.org\" target=\"_blank\">Kafka<\/a>, but I&#8217;m against products comparisons, it&#8217;s up the\u00a0users to understand what they need. <\/p>\n<p><strong>Q6.What are you working at present?<\/strong><\/p>\n<p><strong>Salvatore Sanfilippo:\u00a0<\/strong>At finalizing the Redis 6 release adding many new module APIs, and\u00a0also porting the Disque project (<a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/github.com\/antirez\/disque');\"  href=\"https:\/\/github.com\/antirez\/disque\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/antirez\/disque<\/a>) as\u00a0a Redis module.<\/p>\n<p><strong>Q7. What is your vision ahead for Redis?<\/strong><\/p>\n<p><strong>Salvatore Sanfilippo:\u00a0<\/strong>I think Redis is entering a new stage where there are a number of\u00a0persons that now actively daily contribute to the open source. It&#8217;s\u00a0not just &#8220;mostly myself&#8221;, and that&#8217;s great.<br \/>\nRedis modules are playing an interesting role, we see Redis Labs\u00a0creating modules, but also from the bug reports in the Github\u00a0repository, I think that there are people that are writing modules to\u00a0specialize Redis for their own uses, which is great.<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<h4><a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.odbms.org\/blog\/wp-content\/uploads\/2019\/11\/images.jpeg');\"  href=\"http:\/\/www.odbms.org\/blog\/wp-content\/uploads\/2019\/11\/images.jpeg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-5103\" src=\"http:\/\/www.odbms.org\/blog\/wp-content\/uploads\/2019\/11\/images.jpeg\" alt=\"images\" width=\"149\" height=\"149\" srcset=\"https:\/\/www.odbms.org\/blog\/wp-content\/uploads\/2019\/11\/images.jpeg 175w, https:\/\/www.odbms.org\/blog\/wp-content\/uploads\/2019\/11\/images-150x150.jpeg 150w\" sizes=\"(max-width: 149px) 100vw, 149px\" \/><\/a><\/h4>\n<h4>\u00a0Salvatore Sanfilippo<\/h4>\n<p><em><span class=\"slab\">LEAD, OPEN SOURCE REDIS DEVELOPMENT, <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/redislabs.com');\"  href=\"https:\/\/redislabs.com\" target=\"_blank\">Redis Labs<\/a>.<\/span><\/em><\/p>\n<p><em>Salvatore started his career in 1997 as a security researcher, writing the hping (https:\/\/en.wikipedia.org\/wiki\/Hping) security tool and inventing the Idle Scan (https:\/\/en.wikipedia.org\/wiki\/Idle_scan). Later he worked on embedded systems, focusing on programming languages research and creating a small footprint Tcl interpreter, which is still in active development. With a colleague, Salvatore created the first two Italian social applications in partnership with Telecom Italia. After this experience, he decided to explore new ways to improve web app development, and ended up writing the first alpha version of Redis and open sourcing it. Since 2009, he has dedicated most of his time to developing Redis open source code.<\/em><\/p>\n<p><em>Over the years, Salvatore has also created a number of other open source projects ranging from software defined radio, to line editing tools, to children development environments. He lives in Sicily, Italy.<\/em><\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n<strong>Resources<\/strong><\/p>\n<p><a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/redis.io');\"  href=\"https:\/\/redis.io\" rel=\"noopener\" target=\"_blank\">Redis<\/a> is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.<\/p>\n<p><strong>Related Posts<\/strong><\/p>\n<p>&#8211; <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/www.odbms.org\/2018\/09\/on-redis-qa-with-yiftach-shoolmanfounder-and-cto-of-redis-labs\/');\"  href=\"http:\/\/www.odbms.org\/2018\/09\/on-redis-qa-with-yiftach-shoolmanfounder-and-cto-of-redis-labs\/\" rel=\"noopener\" target=\"_blank\">On Redis.Q&#038;A with Yiftach Shoolman,Founder and CTO of Redis Labs. ODBMS.org<\/a><\/p>\n<p><strong>follow us on Twitter: <a onclick=\"javascript:pageTracker._trackPageview('\/outgoing\/twitter.com\/odbmsorg');\"  href=\"https:\/\/twitter.com\/odbmsorg\" rel=\"noopener\" target=\"_blank\">@odbmsorg<\/a><\/strong><\/p>\n<p>##<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>&#8220;I think Redis is entering a new stage where there are a number of\u00a0persons that now actively daily contribute to the open source. It&#8217;s\u00a0not just &#8220;mostly myself&#8221;, and that&#8217;s great.&#8221; &#8211;Salvatore Sanfilippo I have interviewed\u00a0Salvatore Sanfilippo, the original developer of Redis.\u00a0Redis is an open source in-memory database that persists on disk. RVZ Q1.What is new [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[789,1511,1515,275,446,1513,1036,1514,1512,1510],"_links":{"self":[{"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/posts\/5102"}],"collection":[{"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/comments?post=5102"}],"version-history":[{"count":13,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/posts\/5102\/revisions"}],"predecessor-version":[{"id":5116,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/posts\/5102\/revisions\/5116"}],"wp:attachment":[{"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/media?parent=5102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/categories?post=5102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.odbms.org\/blog\/wp-json\/wp\/v2\/tags?post=5102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}