[英]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.