A 301 Redirect instructs search engines that the content on the requested page (Page A) has been moved to Page B on a permanent basis. As browsers receive this code, you’ll be automatically redirected to the new Page B, mentioned together with the 301 status code. a The 301 redirect code is implemented when your domain is moved permanently, or when web pages have been replaced or moved permanently, or when your web page content is expired, or 404 error wants to point to another, relevant page. The SEO value isn't transferred like adding money to your bank account. The new page will grow it's own value as it is found.
On the other hand, a rel="canonical"
attribute doesn’t redirect a visitor to the new URL. Instead, it signals search engines which page to index in SERPs when duplicated content appears within a site. This attribute is used when the content is duplicated or similar on both impacted pages, and both remain visible to visitors. It is also used at the time of content syndication and when it’s impossible to implement 301 redirects.
Using these practices may be good for SEO. Which one you choose depends on your own choice. Remember to consider the impact on your site overall as well as the impacted pages. Review your analytics results before making changes so you do not lose the momentum from popular pages.