We've covered the topic of how long Google wants you to keep 301 redirects in place here numerous times. John Mueller was asked the question again and this time he said on Twitter "After a few years the old URLs are often no longer accessed & you can drop those redirects."
This is similar to his advice about being patient when removing 301 redirects and to leave them up and running for over a year.
This time he said you should try to keep them up for a "few years" not after you first put them in place but after the old URLs are seen to no longer have been accessed. John Mueller then said a bit later on Twitter to keep them for "at least a year."
Here are the tweets:
301 is permanent, it means forever and that's a mighty long time, but I'm here to tell you, there's something else: the server maintenance.
— 🍌 John 🍌 (@JohnMu) January 18, 2019
After a few years the old URLs are often no longer accessed & you can drop those redirects.
If they're no longer needed after a while (usually I recommend keeping them at least a year), and you don't see traffic to them, then removing them is fine since it makes long-term maintenance easier.
— 🍌 John 🍌 (@JohnMu) January 18, 2019
Why keep the redirects for so long? (1) For users who may click on a link and get sent to a dead URL instead of being redirected to the new URL. (2) So Google can pass PageRank and other link signals from an old URL to a new URL.
I have redirects in place for over 15 years already. :)
Forum discussion at Twitter.