The deal also has a team option for the 2020 season.
Financial terms of the deal were not disclosed, but The Associated Press reported that Hughes will get $2,125,000 in each of the next two seasons. The Reds' option in 2020 is worth $3 million with a $250,000 buyout, according to the AP.
Hughes tweeted about joining the Reds after the deal was announced.
When playing in Cincinnati, you can feel the baseball history. The Queen City is the heart of not just the @MLB, but all of professional baseball. I am thrilled to join the @Reds. I look forward to winning and adding to the history!— Jared Hughes (@locatejared) December 26, 2017
Hughes, 32, went 5-3 with a 3.02 ERA and one save in 67 appearances (59 2/3 innings) for the Milwaukee Brewers last season.
He spent the first six seasons of his career with the Pittsburgh Pirates and has a 2.86 ERA in 369 career innings. He is 20-16 with four saves in 380 appearances.