A problem with Reddit's voting model that some have pointed out is that since you give the same upvote to a post you think is barely upvote-worthy as to a post you think is a rare gem, Reddit incentivizes aiming for mediocrity, since you'll get the most upvotes by making something that the most people will barely decide to upvote. It's a legitimate problem, but one that's not obvious how to solve.
Compared to other like-based systems, Reddit's downvotes play a critical role in mitigating the flaws. When you can upvote a post but not downvote it, a post seen by more people is rewarded over an equally good post that fewer people happen to see. Note the positive feedback loop - a post ranked higher will get more views. And if a post gets a lot of views, it can get to the top even if it would've had several times more dislikes than likes, because only the likes can be communicated. Allowing both upvoting and downvoting improves the system by removing exposure as a factor separate from popular opinion.
One solution is used frequently on review platforms, where you leave a rating rather than a binary like/not or a trinary like/no reaction/dislike, so you can indicate how good or bad you think the content is. But this has its own problem: if you think content is good and you want people to see it, you achieve your goals more effectively by just giving everything you like the maximum rating.
The only way I can think of to really solve the problem of content rating systems is to make upvotes a scarce resource. I've never seen it done, but I'd like to see a system where, for example, you have to give a roughly equal number of likes/dislikes over a long period of time, and can deviate up to a certain extent in the short term.