Ruby 如何使用Redis在Sinatra中存储会话值?
我正试图用Sinatra和Redis建立一个集群,我需要在Redis上存储会话值,这样才能工作,但我找不到文档 有人知道怎么做吗Ruby 如何使用Redis在Sinatra中存储会话值?,ruby,redis,sinatra,Ruby,Redis,Sinatra,我正试图用Sinatra和Redis建立一个集群,我需要在Redis上存储会话值,这样才能工作,但我找不到文档 有人知道怎么做吗 谢谢。您可以访问一个会话对象,例如 get "/bar" do session["hello"] = hello end 您可以访问一个会话对象,例如 get "/bar" do session["hello"] = hello end 您只需要在Sinatra中启用会话,并使用set函数将会话对象中需要的任何值保存到redis enable :sessi
谢谢。您可以访问一个会话对象,例如
get "/bar" do
session["hello"] = hello
end
您可以访问一个会话对象,例如
get "/bar" do
session["hello"] = hello
end
您只需要在Sinatra中启用会话,并使用set函数将会话对象中需要的任何值保存到redis
enable :sessions
redis.set("session_value", session[:value])
您只需要在Sinatra中启用会话,并使用set函数将会话对象中需要的任何值保存到redis
enable :sessions
redis.set("session_value", session[:value])
这里有更详细的答案。我认为使用Sinatra和Redis非常简单 将Redis gem添加到应用程序中。如果您使用的是
Gemfile
,只需将其添加到那里即可
gem 'redis'
接下来,您应该在应用程序中管理Redis URL:
ENV['REDIS_URL'] ||= 'redis://localhost:6379'
# Redis configuration
RedisURI = URI.parse(ENV["REDIS_URL"])
在这里,如果未设置REDIS\u 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中实现会话。下面是更详细的答案。我认为使用Sinatra和Redis非常简单 将Redis gem添加到应用程序中。如果您使用的是
Gemfile
,只需将其添加到那里即可
gem 'redis'
接下来,您应该在应用程序中管理Redis URL:
ENV['REDIS_URL'] ||= 'redis://localhost:6379'
# Redis configuration
RedisURI = URI.parse(ENV["REDIS_URL"])
在这里,如果未设置REDIS\u 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中实现会话