我正在尝试使用Sinatra和Redis建立一个集群,我需要在redis上存储会话值才能使用,但我找不到文档。
任何人都知道怎么做?
谢谢。
答案 0 :(得分:1)
您可以访问一个会话对象,例如
get "/bar" do
session["hello"] = hello
end
答案 1 :(得分:1)
您只需要在Sinatra中启用会话,并使用set函数将所需的任何值从该会话对象保存到redis。
enable :sessions
redis.set("session_value", session[:value])
答案 2 :(得分:0)
这里有更详细的答案。我认为使用Sinatra和Redis非常简单。
将Redis gem添加到应用程序中。如果您使用的是Gemfile
,请将其添加到那里。
gem 'redis'
接下来,您应该在应用程序中管理Redis URL:
ENV['REDIS_URL'] ||= 'redis://localhost:6379'
# Redis configuration
RedisURI = URI.parse(ENV["REDIS_URL"])
如果未设置REDIS_URL
,则应用程序将使用localhost。对于生产部署,您应将其设置为实际生产的Redis服务器。
接下来是解析它:
REDIS = Redis.new(host: RedisURI.host, port: RedisURI.port, password: RedisURI.password)
REDIS
常量是您可以使用的Redis连接。
REDIS.set(param, value) # Set some param to value
REDIS.get(:description) # get description key
在您的情况下,您应该为每个客户使用唯一键。您可以通过Sinatra的方法处理客户的cookie:
response.set_cookie(:foo, 'bar')
request.cookies[:foo]
response.delete_cookie(:foo)
使用此代码,它将非常清楚......
您也可以在Redis中实现会话expire。