2013-08-25 52 views
6

Tôi mới trên redis và tôi thấy rằng học cơ bản về redis rất dễ, nhưng khi tôi cố gắng hiểu cách tôi có thể sử dụng nó với đường ray, nó trở thành dòng chảy và tôi không thể tìm thấy bất kỳ tutoriel tốt mà giải thích các bước từ đầu, ví dụ tôi tìm mã như thế này:không thể hiểu cách redis hoạt động với đường ray

class User < ActiveRecord::Base 
    # follow a user 
    def follow!(user) 
    $redis.multi do 
     $redis.sadd(self.redis_key(:following), user.id) 
     $redis.sadd(user.redis_key(:followers), self.id) 
    end 
    end 

    # unfollow a user 
    def unfollow!(user) 
    $redis.multi do 
     $redis.srem(self.redis_key(:following), user.id) 
     $redis.srem(user.redis_key(:followers), self.id) 
    end 
    end 

nhưng với ví dụ này, không có ví dụ khác cho thấy làm thế nào để sử dụng follow phương pháp, các đối tượng là những gì tôi cần phải chuyển sang phương thức này (là đối tượng này từ một cơ sở dữ liệu quan hệ hay không?) ...

tất cả các ví dụ tôi tìm thấy trong tìm kiếm của tôi là không đầy đủ, và điều này làm lại redis không dễ dàng chút nào khi chúng tôi quyết định sử dụng nó với đường ray! Tôi cũng thấy rằng việc sử dụng redis là mô hình kế thừa từ ActiveRecord, tôi không thể hiểu được: nếu redis được sử dụng trong phần lớn các trường hợp với một cơ sở dữ liệu quan hệ hoặc một mình, và cách thức được sử dụng nhiều nhất là gì, và chính xác như thế nào?

tôi biết rằng câu hỏi của tôi là rộng lớn nhưng những gì tôi tìm kiếm là cách sử dụng redis và đường ray với nhau, cũng nếu bạn có một nguồn lực tốt cho tôi, tôi sẽ rất đánh giá cao điều đó. cảm ơn bạn

Trả lời

8

không có ví dụ khác cho thấy làm thế nào để sử dụng phương pháp tiếp theo, là những gì mà đối tượng tôi cần vượt qua để phương pháp này (là đối tượng này từ một cơ sở dữ liệu quan hệ? hoặc những gì) vv ...

người dùng là đối tượng ActiveRecord - người dùng hệ thống của bạn.

friend = User.find(params[:friend_id]) 
current_user.follow! friend 

Thông thường, Redis được sử dụng làm kho dữ liệu thứ cấp. Dữ liệu người dùng thông thường, dữ liệu khách hàng, v.v., được lưu trữ trong Postgres hoặc MySQL, và dữ liệu được redis-specific được lưu trữ trong redis.

Trong RailsCasts 399 on autocomplete, Ryan cho biết cách sử dụng Redis để chỉ hiển thị cửa hàng sách dưới dạng công cụ tìm kiếm. Anh ấy sử dụng $redis.zrevrange$redis.zincrby

+0

lợi thế ở đây là gì nếu tôi lưu trữ id người dùng không theo dõi người dùng bằng redis? vì vậy ở cuối tôi sẽ trích xuất thông tin của họ từ mysql/postgres !! – medBo

+0

Lợi thế là thời gian gần như liên tục với việc kéo danh sách những người bạn theo dõi. Với hàng triệu hàng, truy vấn này sẽ mất một thời gian dài trong cơ sở dữ liệu tiêu chuẩn. –

+0

@medBo Điều này có trả lời câu hỏi của bạn không? Nếu có, vui lòng đánh dấu là đã chấp nhận. –