Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用Redis在Sinatra中存储会话值?_Ruby_Redis_Sinatra - Fatal编程技术网

Ruby 如何使用Redis在Sinatra中存储会话值?

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

我正试图用Sinatra和Redis建立一个集群,我需要在Redis上存储会话值,这样才能工作,但我找不到文档

有人知道怎么做吗


谢谢。

您可以访问一个会话对象,例如

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中实现会话