[{"data":1,"prerenderedAt":617},["ShallowReactive",2],{"navigation":3,"-drivers-redis":137,"-drivers-redis-surround":612},[4,26],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Getting Started","\u002Fguide","1.guide\u002F1.index",[9,11,16,21],{"title":5,"path":6,"stem":7,"icon":10},"ph:book-open-duotone",{"title":12,"path":13,"stem":14,"icon":15},"Utilities","\u002Fguide\u002Futils","1.guide\u002F2.utils","et:tools-2",{"title":17,"path":18,"stem":19,"icon":20},"HTTP Server","\u002Fguide\u002Fhttp-server","1.guide\u002F3.http-server","ic:baseline-http",{"title":22,"path":23,"stem":24,"icon":25},"Custom Driver","\u002Fguide\u002Fcustom-driver","1.guide\u002F4.custom-driver","carbon:area-custom",{"title":27,"path":28,"stem":29,"children":30,"icon":32},"Drivers","\u002Fdrivers","2.drivers\u002F0.index",[31,33,38,43,48,53,58,63,68,73,77,82,87,92,97,102,107,112,117,122,127,132],{"title":27,"path":28,"stem":29,"icon":32},"icon-park-outline:hard-disk",{"title":34,"path":35,"stem":36,"icon":37},"Azure","\u002Fdrivers\u002Fazure","2.drivers\u002Fazure","mdi:microsoft-azure",{"title":39,"path":40,"stem":41,"icon":42},"Browser","\u002Fdrivers\u002Fbrowser","2.drivers\u002Fbrowser","ph:browser-thin",{"title":44,"path":45,"stem":46,"icon":47},"Capacitor Preferences","\u002Fdrivers\u002Fcapacitor-preferences","2.drivers\u002Fcapacitor-preferences","nonicons:capacitor-16",{"title":49,"path":50,"stem":51,"icon":52},"Cloudflare","\u002Fdrivers\u002Fcloudflare","2.drivers\u002Fcloudflare","devicon-plain:cloudflareworkers",{"title":54,"path":55,"stem":56,"icon":57},"SQL Database","\u002Fdrivers\u002Fdatabase","2.drivers\u002Fdatabase","ph:database",{"title":59,"path":60,"stem":61,"icon":62},"Deno KV","\u002Fdrivers\u002Fdeno","2.drivers\u002Fdeno","simple-icons:deno",{"title":64,"path":65,"stem":66,"icon":67},"Filesystem (Node.js)","\u002Fdrivers\u002Ffs","2.drivers\u002Ffs","ph:file-light",{"title":69,"path":70,"stem":71,"icon":72},"GitHub","\u002Fdrivers\u002Fgithub","2.drivers\u002Fgithub","mdi:github",{"title":74,"path":75,"stem":76,"icon":20},"HTTP","\u002Fdrivers\u002Fhttp","2.drivers\u002Fhttp",{"title":78,"path":79,"stem":80,"icon":81},"LRU Cache","\u002Fdrivers\u002Flru-cache","2.drivers\u002Flru-cache","material-symbols:cached-rounded",{"title":83,"path":84,"stem":85,"icon":86},"Memory","\u002Fdrivers\u002Fmemory","2.drivers\u002Fmemory","bi:memory",{"title":88,"path":89,"stem":90,"icon":91},"MongoDB","\u002Fdrivers\u002Fmongodb","2.drivers\u002Fmongodb","teenyicons:mongodb-outline",{"title":93,"path":94,"stem":95,"icon":96},"Netlify Blobs","\u002Fdrivers\u002Fnetlify","2.drivers\u002Fnetlify","teenyicons:netlify-solid",{"title":98,"path":99,"stem":100,"icon":101},"Null","\u002Fdrivers\u002Fnull","2.drivers\u002Fnull","bi:trash3-fill",{"title":103,"path":104,"stem":105,"icon":106},"Overlay","\u002Fdrivers\u002Foverlay","2.drivers\u002Foverlay","carbon:overlay",{"title":108,"path":109,"stem":110,"icon":111},"PlanetScale","\u002Fdrivers\u002Fplanetscale","2.drivers\u002Fplanetscale","simple-icons:planetscale",{"title":113,"path":114,"stem":115,"icon":116},"Redis","\u002Fdrivers\u002Fredis","2.drivers\u002Fredis","simple-icons:redis",{"title":118,"path":119,"stem":120,"icon":121},"S3","\u002Fdrivers\u002Fs3","2.drivers\u002Fs3","simple-icons:amazons3",{"title":123,"path":124,"stem":125,"icon":126},"UploadThing","\u002Fdrivers\u002Fuploadthing","2.drivers\u002Fuploadthing","qlementine-icons:cloud-16",{"title":128,"path":129,"stem":130,"icon":131},"Upstash","\u002Fdrivers\u002Fupstash","2.drivers\u002Fupstash","simple-icons:upstash",{"title":133,"path":134,"stem":135,"icon":136},"Vercel","\u002Fdrivers\u002Fvercel","2.drivers\u002Fvercel","gg:vercel",{"id":138,"title":113,"body":139,"description":606,"extension":607,"meta":608,"navigation":609,"path":114,"seo":610,"stem":115,"__hash__":611},"content\u002F2.drivers\u002Fredis.md",{"type":140,"value":141,"toc":603,"icon":116},"minimark",[142,147,159,166,182,188,191,194,351,354,375,500,505,576,584,589,599],[143,144,146],"h2",{"id":145},"usage","Usage",[148,149,150,154,155],"p",{},[151,152,153],"strong",{},"Driver name:"," ",[156,157,158],"code",{},"redis",[160,161,163],"read-more",{"to":162},"https:\u002F\u002Fredis.com",[148,164,165],{},"Learn more about Redis.",[167,168,169],"note",{},[148,170,171,172,181],{},"Unstorage uses ",[173,174,178],"a",{"href":175,"rel":176},"https:\u002F\u002Fgithub.com\u002Fredis\u002Fioredis",[177],"nofollow",[156,179,180],{},"ioredis"," internally to connect to Redis.",[148,183,184,185,187],{},"To use it, you will need to install ",[156,186,180],{}," in your project:",[189,190],"pm-install",{"name":180},[148,192,193],{},"Usage with single Redis instance:",[195,196,201],"pre",{"className":197,"code":198,"language":199,"meta":200,"style":200},"language-js shiki shiki-themes github-light github-dark github-dark","import { createStorage } from \"unstorage\";\nimport redisDriver from \"unstorage\u002Fdrivers\u002Fredis\";\n\nconst storage = createStorage({\n  driver: redisDriver({\n    base: \"unstorage\",\n    host: 'HOSTNAME',\n    tls: true as any,\n    port: 6380,\n    password: 'REDIS_PASSWORD'\n  }),\n});\n","js","",[156,202,203,226,241,248,268,279,291,302,319,330,339,345],{"__ignoreMap":200},[204,205,208,212,216,219,223],"span",{"class":206,"line":207},"line",1,[204,209,211],{"class":210},"so5gQ","import",[204,213,215],{"class":214},"slsVL"," { createStorage } ",[204,217,218],{"class":210},"from",[204,220,222],{"class":221},"sfrk1"," \"unstorage\"",[204,224,225],{"class":214},";\n",[204,227,229,231,234,236,239],{"class":206,"line":228},2,[204,230,211],{"class":210},[204,232,233],{"class":214}," redisDriver ",[204,235,218],{"class":210},[204,237,238],{"class":221}," \"unstorage\u002Fdrivers\u002Fredis\"",[204,240,225],{"class":214},[204,242,244],{"class":206,"line":243},3,[204,245,247],{"emptyLinePlaceholder":246},true,"\n",[204,249,251,254,258,261,265],{"class":206,"line":250},4,[204,252,253],{"class":210},"const",[204,255,257],{"class":256},"suiK_"," storage",[204,259,260],{"class":210}," =",[204,262,264],{"class":263},"shcOC"," createStorage",[204,266,267],{"class":214},"({\n",[204,269,271,274,277],{"class":206,"line":270},5,[204,272,273],{"class":214},"  driver: ",[204,275,276],{"class":263},"redisDriver",[204,278,267],{"class":214},[204,280,282,285,288],{"class":206,"line":281},6,[204,283,284],{"class":214},"    base: ",[204,286,287],{"class":221},"\"unstorage\"",[204,289,290],{"class":214},",\n",[204,292,294,297,300],{"class":206,"line":293},7,[204,295,296],{"class":214},"    host: ",[204,298,299],{"class":221},"'HOSTNAME'",[204,301,290],{"class":214},[204,303,305,308,311,314,317],{"class":206,"line":304},8,[204,306,307],{"class":214},"    tls: ",[204,309,310],{"class":256},"true",[204,312,313],{"class":210}," as",[204,315,316],{"class":256}," any",[204,318,290],{"class":214},[204,320,322,325,328],{"class":206,"line":321},9,[204,323,324],{"class":214},"    port: ",[204,326,327],{"class":256},"6380",[204,329,290],{"class":214},[204,331,333,336],{"class":206,"line":332},10,[204,334,335],{"class":214},"    password: ",[204,337,338],{"class":221},"'REDIS_PASSWORD'\n",[204,340,342],{"class":206,"line":341},11,[204,343,344],{"class":214},"  }),\n",[204,346,348],{"class":206,"line":347},12,[204,349,350],{"class":214},"});\n",[148,352,353],{},"Usage with a Redis cluster (e.g. AWS ElastiCache or Azure Redis Cache):",[148,355,356,357,360,361,368,369,374],{},"⚠️ If you connect to a cluster, when running commands that operate over multiple keys, all keys must be part of the same hashslot. Otherwise you may encounter the Redis error ",[156,358,359],{},"CROSSSLOT Keys in request don't hash to the same slot",". You should use ",[173,362,365],{"href":363,"rel":364},"https:\u002F\u002Fredis.io\u002Fdocs\u002Flatest\u002Foperate\u002Foss_and_stack\u002Freference\u002Fcluster-spec\u002F#hash-tags",[177],[156,366,367],{},"hashtags"," to control how keys are slotted. If you want all keys to hash to the same slot, you can include the hashtag in the base prefix by wrapping it in curly braces. Read more about ",[173,370,373],{"href":371,"rel":372},"https:\u002F\u002Fredis.io\u002Fblog\u002Fredis-clustering-best-practices-with-keys\u002F",[177],"Clustering Best Practices",".",[195,376,378],{"className":197,"code":377,"language":199,"meta":200,"style":200},"const storage = createStorage({\n  driver: redisDriver({\n    base: \"{unstorage}\",\n    cluster: [\n      {\n        port: 6380,\n        host: \"HOSTNAME\",\n      },\n    ],\n    clusterOptions: {\n      redisOptions: {\n        tls: { servername: \"HOSTNAME\" },\n        password: \"REDIS_PASSWORD\",\n      },\n    },\n  }),\n});\n",[156,379,380,392,400,409,414,419,428,438,443,448,453,458,468,479,484,490,495],{"__ignoreMap":200},[204,381,382,384,386,388,390],{"class":206,"line":207},[204,383,253],{"class":210},[204,385,257],{"class":256},[204,387,260],{"class":210},[204,389,264],{"class":263},[204,391,267],{"class":214},[204,393,394,396,398],{"class":206,"line":228},[204,395,273],{"class":214},[204,397,276],{"class":263},[204,399,267],{"class":214},[204,401,402,404,407],{"class":206,"line":243},[204,403,284],{"class":214},[204,405,406],{"class":221},"\"{unstorage}\"",[204,408,290],{"class":214},[204,410,411],{"class":206,"line":250},[204,412,413],{"class":214},"    cluster: [\n",[204,415,416],{"class":206,"line":270},[204,417,418],{"class":214},"      {\n",[204,420,421,424,426],{"class":206,"line":281},[204,422,423],{"class":214},"        port: ",[204,425,327],{"class":256},[204,427,290],{"class":214},[204,429,430,433,436],{"class":206,"line":293},[204,431,432],{"class":214},"        host: ",[204,434,435],{"class":221},"\"HOSTNAME\"",[204,437,290],{"class":214},[204,439,440],{"class":206,"line":304},[204,441,442],{"class":214},"      },\n",[204,444,445],{"class":206,"line":321},[204,446,447],{"class":214},"    ],\n",[204,449,450],{"class":206,"line":332},[204,451,452],{"class":214},"    clusterOptions: {\n",[204,454,455],{"class":206,"line":341},[204,456,457],{"class":214},"      redisOptions: {\n",[204,459,460,463,465],{"class":206,"line":347},[204,461,462],{"class":214},"        tls: { servername: ",[204,464,435],{"class":221},[204,466,467],{"class":214}," },\n",[204,469,471,474,477],{"class":206,"line":470},13,[204,472,473],{"class":214},"        password: ",[204,475,476],{"class":221},"\"REDIS_PASSWORD\"",[204,478,290],{"class":214},[204,480,482],{"class":206,"line":481},14,[204,483,442],{"class":214},[204,485,487],{"class":206,"line":486},15,[204,488,489],{"class":214},"    },\n",[204,491,493],{"class":206,"line":492},16,[204,494,344],{"class":214},[204,496,498],{"class":206,"line":497},17,[204,499,350],{"class":214},[148,501,502],{},[151,503,504],{},"Options:",[506,507,508,515,528,540,546,555,567],"ul",{},[509,510,511,514],"li",{},[156,512,513],{},"base",": Optional prefix to use for all keys. Can be used for namespacing. Has to be used as a hashtag prefix for redis cluster mode.",[509,516,517,520,521,524,525],{},[156,518,519],{},"url",": Url to use for connecting to redis. Takes precedence over ",[156,522,523],{},"host"," option. Has the format ",[156,526,527],{},"redis:\u002F\u002F\u003CREDIS_USER>:\u003CREDIS_PASSWORD>@\u003CREDIS_HOST>:\u003CREDIS_PORT>",[509,529,530,533,534,536,537,539],{},[156,531,532],{},"cluster",": List of redis nodes to use for cluster mode. Takes precedence over ",[156,535,519],{}," and ",[156,538,523],{}," options.",[509,541,542,545],{},[156,543,544],{},"clusterOptions",": Options to use for cluster mode.",[509,547,548,551,552,374],{},[156,549,550],{},"ttl",": Default TTL for all items in ",[151,553,554],{},"seconds",[509,556,557,560,561,566],{},[156,558,559],{},"scanCount",": How many keys to scan at once (",[173,562,565],{"href":563,"rel":564},"https:\u002F\u002Fredis.io\u002Fdocs\u002Flatest\u002Fcommands\u002Fscan\u002F#the-count-option",[177],"redis documentation",").",[509,568,569,572,573,374],{},[156,570,571],{},"preConnect",": Whether to initialize the redis instance immediately. Otherwise, it will be initialized on the first read\u002Fwrite call. Default: ",[156,574,575],{},"false",[148,577,578,579,583],{},"See ",[173,580,180],{"href":581,"rel":582},"https:\u002F\u002Fgithub.com\u002Fredis\u002Fioredis\u002Fblob\u002Fmaster\u002FAPI.md#new-redisport-host-options",[177]," for all available options.",[148,585,586],{},[151,587,588],{},"Transaction options:",[506,590,591],{},[509,592,593,595,596],{},[156,594,550],{},": Supported for ",[156,597,598],{},"setItem(key, value, { ttl: number \u002F* seconds *\u002F })",[600,601,602],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":200,"searchDepth":228,"depth":228,"links":604},[605],{"id":145,"depth":228,"text":146},"Store data in a Redis.","md",{"icon":116},{"icon":116},{"title":113,"description":606},"_3-H4_RG6NDrR9xBOBH1OipnQqUyFyVQ8H7nFSnfMDc",[613,615],{"title":108,"path":109,"stem":110,"description":614,"icon":111,"children":-1},"Store data in MySQL database via PlanetScale.",{"title":118,"path":119,"stem":120,"description":616,"icon":121,"children":-1},"Store data to storage to S3-compatible providers.",1781217591575]