簡體   English   中英

如何使用Redis在Sinatra中存儲會話值?

[英]How can I store Session values in Sinatra using Redis?

我正在嘗試使用Sinatra和Redis建立集群,並且我需要將會話值存儲在Redis上才能正常工作,但是我找不到文檔。

有人知道嗎?

謝謝。

有一個可以訪問的會話對象,例如

get "/bar" do
  session["hello"] = hello
end

您只需要在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_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中實現會話過期

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM