Hashes in Ruby are collections of key-value pairs similar to arrays but where indexing is done using keys of any object type rather than integers. Keys and values can be any object including arrays. Hashes have many built-in methods for accessing, modifying, and traversing key-value pairs including fetch, delete, each, keys, values, merge, and more. Creating a hash can be done using Hash.new or Hash[] and default values can be set.