redisキャッシュストレージのセッション原理機構
2022-01-20 23:02:11
Redisをベースにしたセッションの保存
セッションデータをredisに保存したい場合は、セッションストレージのエンジンをredisに変更すればよいだけです。
ストレージエンジンとしてredisを使用した例。
まず、redis storage engine パッケージをインストールします。
go get github.com/gin-contrib/sessions/redis
// Initialize the redis-based storage engine
// Parameter description.
// 1st parameter - the maximum number of free redis connections
// 2nd parameter - number of communication protocols tcp or udp
// 3rd parameter - redis address, format, host:port
// 4th parameter - redis password
// 5th parameter - session encryption key
store, _ := redis.NewStore(10, "tcp", "localhost:6379", "", []byte("secret"))
r.Use(sessions.Sessions("mysession", store))
セッションの有効期限を設定する
// Configure the session expiration time
session.Options(sessions.Options{MaxAge:3600*6 })//6 hours = 60*60*6
分散取得セッション:(redis)
To view the current redis value.
keys *
set key vlaue set key-value pairs
get key View the value (encrypted)
package main
import (
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-contrib/sessions/redis"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
// Configure the middleware for the session
store, _ := redis.NewStore(10, "tcp", "localhost:6379", "", []byte("secret"))
r.Use(sessions.Sessions("mysession", store))
//initMiddleware:Configure the routing middleware
r.GET("/", func(c *gin.Context) {
//set sessions
session := sessions.Default(c)
//configure the session expiration time
Session.Options(sessions.Options{MaxAge:3600*6 })//6 hours = 60*60*6
session.Set("username", "ChengQiang")
//Save sessions: for other pages (must be called)
session.Save()
c.String(200, "gin home")
})
r.GET("/news", func(c *gin.Context) {
//get sessions
session := sessions.Default(c)
username := session.Get("username")
c.String(200, "username=%v", username)
})
}
上記はredisキャッシュストレージSessionの原理メカニズムの詳細であり、redisストレージSessionの詳細については、スクリプトハウスの他の関連記事に注意を払うしてください
関連
-
Redisクラスタのマスターノードとスレーブノードを縮小する詳細チュートリアル
-
RedisTemplatを使った簡単な分散ロックの実装の話
-
redis分散ロックについて解説(redis分散ロックの最適化処理とRedissonの利用について)
-
redisクラスタ構築プロセス (非常に詳細、初心者向け)
-
redis の RedissonLock が待ちロックを実装する方法
-
redisでluaスクリプトを使用するためのチュートリアル
-
redisを使ってnearly peopleの機能を実装する
-
Redisの高同期スパイクを防ぐために、ソースコードソリューションを売られすぎ
-
マイクロサービス領域におけるredisの貢献度を説明する
-
シングルスレッドのredisがなぜ速いのかの紹介
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン