Intro to Redis in C# - Caching Made Easy
ฝัง
- เผยแพร่เมื่อ 24 มิ.ย. 2024
- Caching can make your website run faster, it can improve your desktop application, and it can reduce the stress on your database. Basically, if you figure out caching, you can dramatically improve how well your application scales. In this video, we are going to look at how to use Redis to quickly and easily cache our data. I think you will be shocked by how easy this turns out to be.
Source Code: leadmagnets.app/?Resource=Int...
Mailing List: signup.iamtimcorey.com/
Purchase courses: iamtimcorey.com
0:00 - Intro
1:07 - Creating Blazor Server demo app
2:41 - Simulating wait on data access: AsyncTask Delay
9:05 - Redis Sever using Docker
16:01 - Caching NuGet
17:41 - Application configuration for Redis
21:11 - Redis connection string
23:00 - Extensions: helper methods for caching
40:58 - Implementing caching with Redis
57:38 - Loading data vs cache in action
1:01:16 - Recap
1:02:20 - Azure Redis server
1:13:25 - Stop and remove Redis server on Docker
1:15:40 - Remove Redis on Azure
1:18:37 - Summary and concluding remarks
Thanks to Ralfs HBK for the chapter breakdown
30 minutes ago I searched for "Tim Corey Redis" to see if you had a tutorial on it. Then I get a notification.. Fantastic!
Staying in tune with my viewers and the industry, ... but that is a bit freaky. :)
Its not that freaky if its really your business to understand it.
Taking a look at recent video releases, it looks like Tim started reading my mind. Awesome content.
I try to stay in tune with my viewers
Hey Tim, you’re an awesome teacher.
I’ve been a huge fan of your videos because they are simple, focused on real world scenarios and inculcate best practices along the way.
I would really like you to create a video tutorial on Kubernetes and docker.
Really appreciate your services to the community, not a lot of people share best practices easily.
I showed off a lot on how to use Docker in this video: th-cam.com/video/Yj69cWEG_Yo/w-d-xo.html
I also have a Getting Started with Docker course: www.iamtimcorey.com/p/getting-started-with-docker
I will be doing more with Docker and K8s in the near future.
Absolute Best TH-cam Tutor. I really enjoy your videos more than the ones I pay for. Kudos man.
Thank you.
Now a days, I daily need to come to your channel for a new topic. And everytime, i gather something very useful knowledge.
Thanks for sharing that. Its appreciated.
Thanks so much! I was just about to find a good video on redis so I was very happy when I saw you post a video, great video. Very clear and detailed.
Glad you liked it!
I don't know why every time you posted a new video it makes me happy. :)
I am glad.
I really liked your explanation. It is very clear, practical and no up in the air talks. Redis explained spot on :)
Glad you enjoyed it!
All of your videos are really well done. Very thorough explanations. Thanks for sharing your knowledge!
Glad you like them!
Tim, this is the most instructive video I have found regarding using Redis for caching.
I have looked at several, but they do not explain the level of details you have explained in this video. You have explained in a such way, that any beginner like me will understand and will be able to implement.
Thank you, Thank you very much for doing this for us.
I really appreciate it.
I am glad it was so helpful.
Thanks for this great video Tim, as always; great work.
My pleasure!
Another masterpiece, grateful to share with us!
My pleasure!
yet again, super useful content Tim. thanks for the video
My pleasure!
Sweet, was talking to my colleagues about caching in .Net today at work and they told me to look into Redis. Impeccable timing Tim!
Glad I could help!
Looking forward to the RabbitMQ intro :)
Added to the suggestion list.
Thank you for your time making this! It is extremely useful to me!
You're very welcome!
As always, absolutely great content!
Much appreciated!
I really love your content man! thank you very much for sharing your knowledge!
Thank you for continuing your learning with Tim.
What an effort you put into this. Thanks alot!
You are welcome.
You really make building .NET projects easy. Thanks Tim.
You are welcome.
I've just discovered you, Mr Tim Corey! Having been thoroughly informed on Redis with this great tutorial, it's a given in my brain. You are an absolute legend for all of your hard work so that all of us pick it up.. So much. So useful. So free! What's the catch Tim? How come they are trying to charge me hundreds of dollars for the same sort of video on sites like Udemy and Pluralsight - so why is this different with you?
You must be a saint. The stuff you have taught me will increase the chances of me getting specific roles. There was no sign-up process that stole my data in order to heavily market me offers on Redis subscriptions, etc.
Purest form of altruism, Tim! Massive thank you dear Sir! May your future be safe and secure. May He bless you for your kindness. Thank you. Thank you.
Why thank you, but know that my family does have to eat. I have a paid site and a Patreon option for those that want to help fund the free content. You said you just discovered my materials, have you seen the Path video where I explain much of this? - th-cam.com/video/LUv20QxXjfw/w-d-xo.html
@@IAmTimCorey I have now - with many thanks! Once I have been paid for my current invoice, I will kick back where I can.
I'm a senior developer - with VBA back 15 years ago - through classic ASP, Win Forms, VB.NET, MVC.NET, DotNet Core, etc
Thanks for the Outstanding video Tim. You are a good man.
Very welcome
Once again Great job! Very well done!
Thank you!
Hello Tim, thank you for this nice video. It was really clear to understand on one go!
You are welcome!
Thanks so much for your awesome content. You explain it so well, I am really impressed.
You're very welcome!
You are an excellent guide, a professional and understandable explanation, well done
Thank you!
I heard about Redis but have not tried it before. I know it can make web apps quicker. Now after this tutorial it's much clearer to me!
Glad it helped
PA I just love your series Tim, the tempo, the topics you cover, the quality of the samples.... and your invaluable real world insights.
But I sometimes miss the TH-cam feature which divides your video in segments. If you add those timestamps, so medium, or even advanced developers (viewers with some experience with the reasons or scenarios) can skip a bit, It would be great. While preserving the ultra useful basics for the newcomers at the same time.
That kind of organization in your course wound be even better. Certainly a win-win scenario. Thank you!
When you do see those on my videos, you can look at the video notes and see that they were usually provided by viewers like you. They are great but I just don't have the time to do it. If you are the type person that keeps notes and wants to place the timestamps/chapters in the comments, I will gladly add them to the videos.
Thank you Tim, your explaination is very clear.
You are welcome.
Great explained, Thanks Tim
You are welcome.
Tim keep up the awesome content!
Thanks.
Great vid. Very clear. Thanks for uploading.
Thank you for continuing your learning with Tim.
Amazing content. Thanks a lot for the Video. It's really Caching Made Easy :)
Thank you!
always great tutorial from Tim Corey
Thanks!
Sweet stuff. Thank you Corey.
You are welcome.
Very informative video. Really good practical example with Amazon at the end.
Thanks for the support. Did you mean Azure, not Amazon?
Ty. This tut came out at the right time and helped a lot
Glad to hear it.
Thanks, Tim!
Now we are really waiting for RabbitMQ! And waiting from you exactly because you can make it in the best way :)
P.S. oh, just noticed a video about Azure service bus, it might be somewhat related, so I'm gonna watch it now!
I appreciate the suggestion and added it to my list.
Love it, very clear Thx Tim
You are welcome.
I was just implementing Redis in my project and was struggling with an error I couldn't resolve. And boom, Tim Corey uploads a video on Redis. What are the chances!! Thank you
Great to hear!
wozers! very easy to understand video on Redis. Before this i imagine to setup Redis is kinda complicated and to learning it takes time.. i was wrong! and very easy to use it in .NET Core project! thanks Tim!
Glad it was helpful!
Really thankful for this awesome content
Glad you enjoy it!
0:00 - Intro
1:07 - Creating Blazor Server demo app
2:41 - Simulating wait on data access: AsyncTask Delay
9:05 - Redis Sever using Docker
16:01 - Caching NuGet
17:41 - Application configuration for Redis
21:11 - Redis connection string
23:00 - Extensions: helper methods for caching
40:58 - Implementing caching with Redis
57:38 - Loading data vs cache in action
1:01:16 - Recap
1:02:20 - Azure Redis server
1:13:25 - Stop and remove Redis server on Docker
1:15:40 - Remove Redis on Azure
1:18:37 - Summary and concluding remarks
Thanks. This is really helping other folks in the community, based on the many comments I get.
this guy waste a lot of time for real.
@@saeedsedigh443 waste??? what do you mean? he is teaching a LOT of developers on how to do stuff that some people find hard to figure out?
@@saeedsedigh443 You are WRONG! Thanks soooo much for Tim!!!
@@carstenberggreen7509 I appreciate the effort it takes to create videos and share knowledge, but I do agree he wastes too much time. He has this video on an "Advanced C#" playlist, but then spends 3 minutes creating a new project and keeps stopping throughout the video to spend a long time explaining basics of the language. For example, at 23:00 he spent 17 minutes to write 2 functions which are only a few lines of code each while talking about what an extension method is and what null is. Maybe I'm just the wrong target audience and it's more aimed at absolute beginners, but I do think if someone is at the point that they want to learn how to improve the performance of their app with caching, they're already very familiar with the language features he is using here.
Thanks for your awesome and usefull videos. Thanks a lot. 🙏🙏🙏
You are welcome.
Many Thanks for the wonderful help you are doing to seekers like me. :)
You are welcome.
it's a really great tutorial. Thanks!
You're welcome!
Awesome video as usual, Tim! is there any chance you will be covering the changes that C# 9 brings in a video sometime in the future?
Multiple folks have requested, so its on the list.
You're the real savior my friend, God bless the kind people.
I am glad it was so helpful.
This is great! - I asked for this a few weeks ago and here it is :-) One question though. What is the best way to force a read from the original source if you know that the cashed data is no longer valid?
Amazing video . Thanks
You are welcome.
Thanks a lot Tim!
Thanks for watching.
Thank you that was very helpful and informative! Thank you for inspiring
Are there any other native properties for the cached items than timeout of the items and timeout if unused?
I have implemented an in-memory Least Recently Used cache for example but that's inside my application so I am wondering if Redis directly supports this or maybe we can override the default Redis behavior somehow? Or extend it?
hello master Tim, and thank you for all your great work
I just got a job as a developer, a trainee currently, and your videos were very helpful to show my mentors that i am learning
unfortunately, I am from Lebanon and I can pay anything online, but maybe when i start getting salary i will,
and if i do i will register to your courses
The reason I do this work is so you can have a better life, not to force you to pay me money. I am thrilled to hear about your job. Check out my Dev Questions playlist/podcasts and my Blog to help you when you find workplace challenges. Both at IAmTimCorey.com. Good luck in your new position! I am very proud of you.
thank you Tim. i just yet implement it in my site
You are welcome.
Hi Tim, Another awesome video from you. I have a question for you. Like cookie authentication, do we have session based authentication in core? Redis could be more beneficial if we store the data for authentication purpose. I have seen various example of storing the data in session and retrieving back but nowhere found for authentication and authorisation purpose. Does session based authentication exists or it just used to store the data for state management?
you're the best one. thank you.
You're welcome!
Thanks for another great video. I was just wondering, why do you put time variable in recordKey and set an expiration on the same record? Would it not be enough just to set the expiration and have the same recordKey every time?
Excellent stuff
Thank you!
Thanks very much for help!
You are welcome.
Tim, one thing that might be useful (and I've done in the past) is a method for downgrading from Redis to local caching if it becomes unavailable (like when you unplugged the docker container). And then automatically switching to Redis when it does come back online.
Thanks for sharing!
Great channel!
Thank you!
I usually use memurai on windows and EasyCaching on all asp.net core apps and the amount of load it push back from server is huge. thanx for video.
Glad you found something that works for you.
Tim you're great!
Thanks
Yay a new practical video 🥰
Topic suggestion: Allocation free c#. What's span about? A lot of people getting in touch with C# through Unity so shaving of another 2ms from your render loop can actually matter! :)
Added to the list for consideration.
Excellent video @IAmTimCorey. Unlike your other videos, in the beginning of this video you did not tell us why use Redis and not IMemoryCache provided by Microsoft. Or in what situations to prefer one over the other!
Thanks for the observation.
Hi Tim, love the new video. I signed up to your C# courses and am really getting a lot out of them, so thanks for all you do. Suggestions for videos/courses. Something I'd really like to see is building upon some of the courses you've already done relating to databases. That is, accessing databases securely, I can see you have tutorials on accessing databases, but in a fairly recent video regarding database security you recommend users don't send credentials from their application to the remote DB for security reasons, you talked about using stored functions and creating our own API's to interact securely with remote DB, so perhaps a guiding showing us how to do this. For example a user sign in system from a WPF app to remote DB or getting product info from DB properly and securely. That would be really great to see, perhaps with Azure as well?
Noted... Its on the list.
@@IAmTimCorey Lol yeah it was a bit longer than intended 😂 Edited it down, note to self, stop writing messages on multi sessions and forgetting what you wrote.
I think the better option for giving required absoluteRequireTime is to set this as default value, but a specific value instead of null. Because this value will be shown for everyone who calls this method. And will be clear that expiration will happen after that time. And user of this method will not need to analyze the method itself for been able to understand this behavior.
Just a note. Don`t want to sound like i didn`t like this lesson. It`s very informative! Thank you very much, Tim!
Thanks for the suggestion.
Great video! One tip on keeping it cleaner with your if/else with strings being null or empty (and the small bugs that can happen if you check for the wrong state) is to use the built in string method string.IsNullOrEmpty(stringVar)
Thanks for posting the tip
Q
Great guide easy to follow and understand i hope you make a windows version of redis guide.
Thanks for the recommendation. I have added it to Tim's list of viewer suggestions for videos.
just amazing
Thanks!
Tim I really appreciate your video.
Would you be able to do a video on how to do searching with caching,
Thanks, I added it to the suggestion list.
Hi Tim
Thanks as always for the great videos
I'm in the middle of a .NET project, trying to get my head around sending emails from within the app. Is the infrastructure built in within the framework or does it need to be built manually? Would love to see a video on how to go about setting up email sending infrastructure.
Thanks in advance
Added to the list, thanks for the suggestion.
thanks a lot so useful
You are welcome.
Would love to see videos of building custom attributes and lazy loading use cases and implementations.
I will add it to the list. Thanks for the suggestion.
Thank you for the video! Could you do a video on Blazor WASM with Browser Cache? I am looking at doing a PWA and I wanted to understand the best practices for storing the data before going to the API (and failing gracefully when the API isn't available).
Great suggestion! Added to the list.
Good job Bro. Am really enjoying your videos.
Please make a video on sending emails with views like we have in laravel.
Thanks
Noted... Its also added to the list.
Thanks a lot, Tim Corey. Please can you do a video on how to record tutorial videos for youtube? Do you record the video first before voice over or do you do both at the same time?
I can add that to the suggestion list. As for your specific question, I do everything together. I don't do voice overs. It is way too complicated and messy to try to do it that way.
@@IAmTimCorey Alright...Thanks a lot
Tim thank you very much. If you can, please do a video about report generation in c# please
Are you familiar with my TimCo series? Complete real world application lifecycle with this episode on Reporting - th-cam.com/video/j1Y8gbZxIyo/w-d-xo.html
Thank you so much
Tim appreciates you watching his videos and trusting him for your learning.
firefox - microsoft terminal - powershell core this video is on fire
Sweet!
Hi Tim, Thank you very much for Redis tutorial. Really learned a lot from this. But I just wanted to confirm if the same process needs to be done if i wanna to install Redis on Windows Server 2016.
You should be able to use Docker there as well, although you can directly install Redis if you want.
I was wondering about In-memory caching vs ResponseCache. Have you talked about those in previous videos? Mainly for WebAPI
I haven't yet. I'll put that suggestion on the list.
Please do a tutorial on asp.net core caching(In-memory) and explain the difference between redis caching and asp.net core caching and when to use what.
Thanks for the suggestion, added to the list.
Hi Tim, great video again. Out of curiosity, which keyboard model do you use? 😆
I use the Logitech MX Keys keyboard: amzn.to/3YYBwcy
@@IAmTimCorey Are you happy using it so far? Do you think it is rigid and not bumping back while typing? Also would you prefer TKL version?
I love it. I'm not sure what I would improve. It is amazing. It can connect to three different computers (which I use). The 10-key section is useful as well (for me), but if you don't need it, it would be fine without it.
Thanks Tim, I loved the explanation!
Is it advisable to use redis in docker in production environment?
You can. It depends on your need and what your setup looks like. Kubernetes is basically just a bunch of Docker containers. You put your entire stack in those sometimes. However, in other situations, it is better to have Redis on a dedicated server.
@@IAmTimCorey thanks a lot for your answer!
Thank you so much. Can you tell us about the interaction of Redis with GraphQL, in particular with the HotChocolate library?
That is a bit specific. I have added this to Tim's list of possible future topics. He uses the list to see common trends and requests that would help the most folks.
I'm still waiting for your Comprehensive Blazor Wasm Course lol
You and me both!
Works wonders for Windows Apps too. ie.. data driven combo boxes that don't change much.
Thanks for sharing
Would you please a tutorial or course about C# Socket Programming (e.g Client - Server desktop application) ? Thank you in advance. I like your courses
Thanks, I will add this suggestion to my list.
Hi Tim!
I would really love a tutorial on Redis with WinForms/WPF.
Thanks in advance!
Noted! Added to the list.
@@IAmTimCorey Thank you so much!
Thank you.
You are welcome.
Thank you 🥰🥰
You are welcome.
Do you have access to my recent youtube search history 😝...have started to learn about Redis since the last 2-3 days n this video came as a surprise for me 😀
I try to be current.
Hello Tim. I noticed that the extension where the Set and Get exist is "static". Does this affect the way the data is accessed in an async environment? Will the threads wait for the using thread to exist?
Tim thanks for a fantastic video! I am trying to deploy this but hit a snag: I have a console app that connects to redis ; both are on docker containers using docker-compose. What should the connection string be from my console app to access the redis container?
You should have access to the container by name. You would use that name in the connection string.
@@IAmTimCorey thank you! Love your videos btw. They give me a great starting point into new topics that would otherwise feel too daunting to start with!
Hi Tim, question: What's wroing with just using an RDBMS? Don't RDMS servers like MSSQL also have caching?
Speed is the issue. Caching needs to be as quick as possible. Otherwise it isn't valuable. If you tried creating a caching table in SQL, for instance, every insert would trigger a log event in SQL. It would also write to the disk. That's at minimum. Then, when you did a lookup, it would create an execution plan, do a seek to the correct location, read that location off of disk, and then transfer the data. With Redis, everything is stored in memory. There is no writing to disk. There is no logging. This is a big difference.
@@IAmTimCorey Thanks Tim, but can we not simply use c# ConcurrentDictionaries as a cache? Would probably serve the same purpose wouldn't it?
@@azrinsani if your app goes down all data goes down with it in this scenario
Hi Tim, great short course to get started with Redis!
While coding, I noticed you were getting an automatic prompt to bring in the namespaces of whichever classes you were using. It does not seem you were hitting Ctrl + . to import them.
Please can you share what extension or option you are using to get that feature? Is it Resharper?
That's part of the latest versions of Visual Studio 2019 (Community Edition).
@@IAmTimCorey Thank you Tim, i will check it out in the latest version. I currently have Visual Studio Community 2019
Version 16.7.7
Any plans to cover new css isolation? I'd kill to see it done with sass and webpack in blazor project.
I put it on my list of suggested topics for the future.
Hey Tim, I am a basic C# self-taught programmer and I do my projects on VS. Some of the projects that ive created are making a pyramid of stars, calculating any year to know if it is a leap year or not, and reading the size of each folder I have in my C drive. With that, I do not have a degree yet, and would like to know if I have a chance of getting a job at a company as a junior developer or likewise. Thank you Tim.
I would suggest you need to build up some more breath. My Foundation series is the best place to start. If you have not already, check out this video - th-cam.com/video/LUv20QxXjfw/w-d-xo.html It is intended to help you assess where you are and the topics you need to add to your base skills. I believe it will help you build on that base you have already. My goal is to make becoming a developer easier and I hope I can help you be successful through your full journey! Just don't give up. Its a journey of a life time.
Ty bro.
Thank you for watching.