How To Include Redis In Your Application Architecture

The Python Podcast.__init__

Episode | Podcast

Date: Mon, 04 Mar 2019 13:00:00 -0500

<div class="wp-block-jetpack-markdown"><h3>Summary</h3> <p>The Redis database recently celebrated its 10th birthday. In that time it has earned a well-earned reputation for speed, reliability, and ease of use. Python developers are fortunate to have a well-built client in the form of redis-py to leverage it in their projects. In this episode Andy McCurdy and Dr. Christoph Zimmerman explain the ways that Redis can be used in your application architecture, how the Python client is built and maintained, and how to use it in your projects.</p> <h3>Announcements</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>When you&#8217;re ready to launch your next app or want to try a project you hear about on the show, you&#8217;ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you&#8217;ve got everything you need to scale up. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/linode</a> to get a $20 credit and launch a new server in under a minute. And don&#8217;t forget to thank them for their continued support of this show!</li> <li>And to keep track of how your team is progressing on building new features and squashing bugs, you need a project management system designed by software engineers, for software engineers. Clubhouse lets you craft a workflow that fits your style, including per-team tasks, cross-project epics, a large suite of pre-built integrations, and a simple API for crafting your own. Podcast.__init__ listeners get 2 months free on any plan by going to <a href="https://www.pythonpodcast.com/clubhouse?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/clubhouse</a> today and signing up for a trial.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at <a href="https://twtiter.com/Podcast__init__?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@Podcast__init__</a> or email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>)</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a> and tell your friends and co-workers</li> <li>Join the community in the new Zulip chat workspace at <a href="https://www.pythonpodcast.com/chat?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/chat</a></li> <li>You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don&#8217;t want to miss out on this year&#8217;s conference season. We have partnered with O&#8217;Reilly Media for the Strata conference in San Francisco on March 25th and the Artificial Intelligence conference in NYC on April 15th. Here in Boston, starting on May 17th, you still have time to grab a ticket to the Enterprise Data World, and from April 30th to May 3rd is the Open Data Science Conference. Go to <a href="https://www.pythonpodcast.com/conferences?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/conferences</a> to learn more and take advantage of our partner discounts when you register.</li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Andy McCurdy and Christoph Zimmerman about the Redis database, and some of the various ways that it is used by Python developers</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you start by explaining what Redis is and how you got involved in the project?</li> <li>How does the redis-py project relate to the Redis database and what motivated you to create the Python client?</li> <li>What are some of the main use cases that Redis enables?</li> <li>Can you describe how Redis-py is implemented and some of the primitives that it provides for building applications on top of? <ul> <li>How do the release cycles of redis-py and the Redis database relate to each other?</li> <li>How closely does redis-py match the features of the Redis database?</li> <li>What are some of the convenience methods or features that you have added to make the client more Pythonic?</li> </ul> </li> <li>Redis is often used as a key/value cache for web applications, in some cases replacing Memcached. What are the characteristics of Redis that lend themselves well to this purpose? <ul> <li>What are some edge cases or gotchas that users should be aware of?</li> </ul> </li> <li>What are some of the common points of confusion or difficulties when storing and retrieving values in Redis?</li> <li>What have been some of the most challenging aspects of building and maintaining the Redis Python client?</li> <li>What are some of the anti-patterns that you have seen around how developers build on top of Redis?</li> <li>What are some of the most interesting or unexpected ways that you have seen Redis used?</li> <li>What are some of the least used or most misunderstood features of Redis that you think developers should know about?</li> <li>What are some of the recent and near-future improvements or features in Redis that you are most excited by?</li> </ul> <h3>Keep In Touch</h3> <ul> <li>Andy <ul> <li><a href="https://twitter.com/andymccurdy?lang=en&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@andymccurdy</a> on Twitter</li> <li><a href="https://github.com/andymccurdy?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">andymccurdy</a> on GitHub</li> </ul> </li> <li>Christoph <ul> <li><a href="https://github.com/chrisAtRedis?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">chrisAtRedis</a> on GitHub</li> <li><a href="https://www.linkedin.com/in/christoph-dr-zimmermann-ab48353/detail/recent-activity/posts/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">LinkedIn</a></li> </ul> </li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://en.wikipedia.org/wiki/Rowan_Atkinson?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Rowan Atkinson</a></li> </ul> </li> <li>Andy <ul> <li><a href="https://www.amazon.com/Food-Lab-Cooking-Through-Science/dp/0393081087?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Food Lab: Better Home Cooking Through Science by J. Kenji Lopez-Alt</a></li> <li><a href="https://steamcommunity.com/sharedfiles/filedetails/?id=1613886175&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Dota 2 Auto Chess (Community Mod)</a></li> </ul> </li> <li>Christoph <ul> <li><a href="https://www.ballastpoint.com/beer/grapefruit-sculpin/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">IPA Infused With Grapefruit Juice</a></li> <li><a href="https://redis-py.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">redis-py</a></li> <li><a href="https://selenium-python.readthedocs.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Selenium Python client</a></li> <li><a href="http://daniel-suarez.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Daniel Suarez</a> <ul> <li><a href="http://daniel-suarez.com/influxsynopsis.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Influx</a></li> </ul> </li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="https://redis-py.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">redis-py</a></li> <li><a href="https://redis.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Redis DB</a></li> <li><a href="https://redislabs.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Redis Labs</a></li> <li><a href="http://www.php.net/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">PHP</a></li> <li><a href="https://www.djangoproject.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Django</a></li> <li><a href="https://www.researchgate.net/publication/2684756_A_Reflective_Architecture_for_Real-Time_Operating_Systems?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Reflective Operating System Architectures</a></li> <li><a href="https://www.tcl.tk/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">TCL</a></li> <li><a href="https://www.perl.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Perl</a></li> <li><a href="https://en.wikipedia.org/wiki/Linux?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Linux</a></li> <li><a href="https://memcached.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Memcached</a></li> <li><a href="https://nextcloud.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">NextCloud</a></li> <li><a href="https://en.wikipedia.org/wiki/C_(programming_language)?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">C</a> programming language</li> <li><a href="https://uwsgi-docs.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">uWSGI</a></li> <li><a href="http://flask.pocoo.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Flask</a></li> <li><a href="http://flask.pocoo.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Gevent</a></li> <li><a href="https://pypy.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">PyPy</a></li> <li><a href="https://github.com/RedisLabsModules/redisjson?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">re-json</a></li> <li><a href="https://oss.redislabs.com/redisgraph/#loading-redisgraph-into-redis?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">redis-graph</a></li> <li><a href="https://github.com/RedisLabsModules/RediSearch?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Redis-search</a></li> <li><a href="https://www.mongodb.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">MongoDB</a></li> <li><a href="https://en.wikipedia.org/wiki/Bloom_filter?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Bloom Filter</a></li> <li><a href="https://github.com/redis/hiredis?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">hiredis</a></li> <li><a href="https://redis.io/topics/sentinel?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Redis Sentinel</a> HA plugin</li> <li><a href="https://www.lua.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Lua</a> programming language</li> <li><a href="https://openwrt.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">OpenWRT</a></li> <li><a href="https://openwrt.org/docs/guide-user/luci/start?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">LuCI</a></li> <li><a href="https://micropython.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">MicroPython</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-15-damien-george-talks-to-us-about-micropython/?utm_source=rss&amp;utm_medium=rss">Podcast Episode</a></li> </ul> </li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a></p> </div> <img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fredis-python-application-architecture-episode-201%2F&amp;action_name=How+To+Include+Redis+In+Your+Application+Architecture+-+Episode+201&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />