Redisã¯å¤å½©ãªãã¼ã¿æ§é ããã¤1ã¤ã³ã¡ã¢ãªDBã§ãããæ¨ä»ã®Webã¢ããªã±ã¼ã·ã§ã³ã®ãã¼ã¿ã¹ãã¢ã®ä¸ã¤ã¨ãã¦ãåºãå©ç¨ããã¦ããã ãããã䏿¹ã§ãæ§è½æ¹åã®ããã®ææ³ãä½ç³»çã«ã¾ã¨ããè³æãè¦å½ãããªãã¨æãã¦ããã å®éãæåã«CPUè² è·ãåé¡ã«ãªã£ãã¨ãã«ã©ããããã®ãã¨æ©ã¿ã調æ»ã¨è©¦è¡é¯èª¤ãç¹°ãè¿ããã ããã§ããã®è¨äºã§ã¯ãèªåã®çµé¨ãåºã«ãRedisãµã¼ãã®CPUè² è·å¯¾çããCPUè² è·åæ¸ããã¹ã±ã¼ã«ã¢ããããã¹ã±ã¼ã«ã¢ã¦ããã«åé¡ãããã¿ã¼ã³ã¨ãã¦ã¾ã¨ããã èæ¯ Redisã®CPUè² è·å¯¾çãã¿ã¼ã³ CPUè² è·åæ¸ multiã³ãã³ã Redisãã¤ãã©ã¤ãã³ã° Luaã¹ã¯ãªããã£ã³ã° Redisã¢ã¸ã¥ã¼ã«(夢) ã¹ã±ã¼ã«ã¢ãã ã¹ã±ã¼ã«ã¢ã¦ã åç §ç¨ã¹ã¬ã¼ã åç´åå² æ°´å¹³åå² Redis Clusterã«ããæ°´å¹³åå² ãã®ä» ã¹ã©ã¤ãè³æ ãã¨ãã åèè³æ èæ¯ R
ã¹ã±ã¼ã©ãã«ã«IDãçæããæ¹æ³ã¨ã㦠Twitterã®snowflakeãæåã§ãã 1024å°ã¾ã§ã¹ã±ã¼ã«ãããã¨ãåºæ¥ã¾ãããåsnowflakeã®ãµã¼ãã«ã¦ãã¼ã¯ãªWoker IDãå²ãæ¯ãå¿ è¦ãããã¾ãã IDãæ¯ãããã®ãµã¼ãã«IDãæ¯ãã®ãåé¡ã«ãªãã¨ã¯é£ããã§ããã åsnowflakeãµã¼ãã«IDãæ¯ã親çWorker IDé å¸ãµã¼ããä½ãã¨ããã¢ã¤ãã¢ã¯ãã£ãã®ã§ããã Worker IDãµã¼ãã®å¯ç¨æ§ãèããã®ã大å¤ã§æãä»ãã¦ãã¾ããã§ããã æè¿ã«ãªã£ã¦Worker IDãµã¼ãã¨ãã¦Redisã使ããã½ã¼ãæ¸ã¿ã»ããåã§ç®¡çããã°æ¥½ã§ããã®ã§ã¯ï¼ ã¨æãã¤ããã®ã§ããã£ã¦ã¿ãã¨ããã話ã§ãã æ¦è¦ ã¬ãã¸ããªã¯ãã¡ãã§ãã shogo82148/yaraus ä»ã®snowflake-likeãªIDçºçªãµã¼ãã®å®è£ ã¨ã㦠katsubushiã sonyflakeãª
package main import ( "log" "strings" "sync" "github.com/tidwall/redcon" ) var addr = ":6380" func main() { var mu sync.RWMutex var items = make(map[string][]byte) var ps redcon.PubSub go log.Printf("started server at %s", addr) err := redcon.ListenAndServe(addr, func(conn redcon.Conn, cmd redcon.Command) { switch strings.ToLower(string(cmd.Args[0])) { default: conn.WriteError("ERR unknown command
Redisé¢é£ã®ç£è¦/ãã¼ã¿åæç³»ãã¼ã«ã«ã¤ãã¦ã¡ã¢ãã¦ããã¾ãã éæè¿½è¨äºå®ãå®åã§æç¨ãªãã¼ã«ãä»ã«ããã¾ãããæãã¦ããã ããã¨å¬ããã§ãã ç°å¢ CentOS 5.9, Ubuntu 12.04 (x86_64) Redis 2.6.10 (â» CentOSã®6.xç³»ã¸ã®ç§»è¡ã¯è¶³è¸ã¿ç¶æ ãç¸å½å¤§å¤ã§ããããã) 以ä¸ã®é ã«ç´¹ä»ãã¦ããã¾ãã Redisã³ãã³ã Redis Sentinel Redis Live Redis Faina Redis Sampler redis-top Nagiosãã©ã°ã¤ã³ Zabbixãã³ãã¬ã¼ã Muninãã©ã°ã¤ã³ Cactiãã©ã°ã¤ã³ æå¾ã®Cactiãã©ã°ã¤ã³ä»¥å¤ã¯å®éã«å°å ¥ãã¦è©¦ãã¦ã¿ã¾ããã以éãè¦åºãã«åãããã¯ãã¸ã®ãªã³ã¯ãè²¼ã£ã¦ããã¾ãã Redisã³ãã³ã ãã¼ã«ç´¹ä»ã®åã«ã¾ãã¯åºæ¬ãããRedisã«ã¯ç£è¦ããã¼ã¿è§£æç¨éã§ä½¿
Implemented commands: Connection (complete) AUTH -- see RequireAuth() ECHO HELLO -- see RequireUserAuth() PING SELECT SWAPDB QUIT Key COPY DEL DUMP -- partly, only handles string keys EXISTS EXPIRE EXPIREAT EXPIRETIME KEYS MOVE PERSIST PEXPIRE PEXPIREAT PEXPIRETIME PTTL RANDOMKEY -- see m.Seed(...) RENAME RENAMENX RESTORE -- partly, only handles string keys SCAN TOUCH TTL TYPE UNLINK WAIT -- no-op
2/18ã®ãããµã2016ã§çºè¡¨ããã¹ã©ã¤ãã«ãªãã¾ãã è使¨©ã®é¢ä¿ä¸ããã¿ã¹ã©ã¤ãã¯å ¨ã¦åé¤ãã¦ããã¾ãã Developers Summit 2016ã18-C-4ã æ ªå¼ä¼ç¤¾ã¢ã«ãã é§äºç¥äºº
ã¡ã¢ã¡ã¢ãæ³¥èã話ã§é¢ç½ãã£ãã§ãã ãå¤§è¦æ¨¡Redisãµã¼ã縮å°åã®æ¦ãã é§äº ç¥äºº æ° (æ ª)ã¢ã«ãã ã²ã¼ã ã®ãµã¼ããµã¤ãæ©è½éçºãã¤ã³ãã©ã®è¨è¨æ§ç¯ã»ä¿å®éç¨ Redisã¨ã¯ ã¤ã³ã¡ã¢ãªDB 5種é¡ã®ãã¼ããªã¥ã¼ã®ãã¼ã¿å ãã¡ã¤ã«æ°¸ç¶åãªãã·ã§ã³ ã·ã¹ãã ã®åé¡ç¹ EC2ãµã¼ãã20å°ã«å¯¾ãã¦ãAWSã®ElasticCache(Redis)ã64å°ãã£ã ãªã64å°ãã£ããã¨ããã¨ããªãªã¼ã¹ç´å¾ã«Redisã®è² è·åé¡ãããã8å° => 64å°ã«ãªã£ã 調æ»ããã¨keys("")ãå®è¡ãã¦ããç®æããã£ã å½ç¶ãéãããã(cache.m3.large * 64å° = ç´135ä¸å/æ) åé·åããã©ãããè¨å®ãã¡ã¤ã«ã®è¨è¼ãè¾ã ã®ã§ã縮å°åã¨åé·åã®å¯¾å¦ãããã ç¾ç¶æ´ç æ ¼ç´ããã¦ãããã¼ã¿ ãã¬ã³ãæ å ±ãã»ã¼ã«æ å ±ãã©ã³ãã³ã°æ å ± ãã¼ã®ä»¶æ° 1ãµã¼ãã«8DBã1DBãã
Railsã§ä¸è¦æ¨¡ãªãµã¤ããä½ã£ã¦ããä¸ã§ é¿ãã¦éããªãã®ããå¢ãã¦ããã¢ãã«ãé©åã«ãã£ãã·ã¥ããããã¿ã®ããã«æãã¾ãã ç¹ã«å¤æ´ãå°ãªããã¹ã¿çãªãã¼ãã«ã«å¯¾ãã¦ããå¤å¯¾å¤ãã§é¢é£ä»ã(ã¢ã½ã·ã¨ã¼ã·ã§ã³: association)ãããå ´åãªã©ã¯ã ãããªãã®SQLã®çºè¡ã³ã¹ãã«ãªããã¨ãããã¾ãããããé©åã«ãã£ãã·ã¥ãããã¨ã§DBã¸ã®è² è·ãæ¸ãã ã¦ã¼ã¶ã¼ã¸ã®ã¬ã¹ãã³ã¹ãæ¹åãããã¨æãã¾ãã ä»åã¯ãæè¿å®è£ ãã¦ãããã£ãã·ã¥ã®æ¹æ³ã«ã¤ãã¦ãç´¹ä»ãããã¨æãã¾ãã (ã¨ãããåã人ããã²ããæ¹æ³æãã¦ãã ããï¼ï¼) ð£ åææ¡ä»¶ï¼ RailsããRedisã«ãã£ãã·ã¥ä»åã¯åææ¡ä»¶ã¨ãã¦ãRailsã®ã¢ããªã±ã¼ã·ã§ã³ãããredis-store/redis-rails - GitHubã ã®Gemã使ã£ã¦ãRedisã«ãã£ãã·ã¥ãããã¦ããã¨ãã¾ãã ã»ããã¢ããæ¹æ³ã¯ãr
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Redisä¸é©åå©ç¨ã«ããåé¡ã¯æ¬çªéç¨ãå§ã¾ã£ã¦ããé¡å¨åãããã¨ãå¤ããæéçå¼¾ã¿ãããªåå¨ã§ããäºåã«é²ãã«ã¯ã³ã¼ãã¬ãã¥ã¼æ®µéã§å©ãããããã¾ããã Redisã¯ã¹ã¯ãªããè¨èªã¨ç¸æ§ãè¯ããé©åã«å©ç¨ããã¨RDBã¨æ¯è¼ãé©ãã»ã©é«éãªããã°ã©ã ãçµããã¨ãã§ãã¾ããæ¨å¹´å°æ¬ããå 輩ã«ã³ã¼ãã¬ãã¥ã¼ã§æ§100æ¬ããã(ã¬ãã¥ã¼ã³ã¡ã³ã)æãããã¦è¡ã¾ã¿ãã«ãªãã¤ã¤å¦ãã ãã¨ããã¾ã¨ãã¦æ¸ãã¦ã¾ããæ¦è¦ã¯ãæ¶ãã¦ãè¯ããã¼ã¿ãªãRedisã Redisã®ã¡ã¢ãªã溢ããã... ï¼ãã®è©±ã¯äºå®ã§ã¯ãªããã¡ã³ã¿ã¸ã¼ã§ããï¼ æ·±å¤é»è©±ã§å©
Redisã®ä½è antirezæ°èªãã«ãããmemcachedã¨Redisã®é·æçæã®æ¯è¼ãç¹ã«ãRedisãåãªããã£ãã·ã¥ç¨ã¢ããªã±ã¼ã·ã§ã³ã¨ãã¦memcachedã¨æ¯è¼ãããã¨ã®ééãã¨ãããããã®åãã¦ããä½¿ç¨æ¹æ³ã«ã¤ãã¦ã®ç§è¦ã ããªããç§ã¨é¢èããããªããç§ãç«¶å製åããããã¨ãæªãã¨èãã人éã§ãªããã¨ã¯ãåç¥ã§ããããã¦ã¼ã¶ã¼ã«é¸æè¢ããããã¨ã¯æ¬å½ã«ãããã¨ã ã¨æã£ã¦ãã¾ãããã ããããä»ã®æè¡ã¨Redisãæ¯è¼ãããããªãã¨ã¯ã»ã¨ãã©ãã¾ããã§ããã ããããæé©ãªã½ãªã¥ã¼ã·ã§ã³ãé¸ã¶ããã«ã¯ãã¦ã¼ã¶ã¼ã¯æ£ããæ å ±ãæããã°ãªããªãã®ã確ãã§ãã ãã®è¨äºãæ¸ãã®ã¯ãæåãªã©ã¤ãã©ãªã§ããSidekiqã®ä½è ã¨ãã¦ç¥ãããMike PerhamããRedisã®ããã¯ã¨ã³ãã¹ãã¬ã¼ã¸ã¨ãã¦ã®ä½¿ãæ¹ãæ¸ããè¨äºãèªãã ã®ããã£ããã§ããå¾ã£ã¦ãç§ã¯MikeãRedisã«ãå
Redis Commands: Geography Edition Commands (with examples) How to Add Geo Commands to Redis Origin Story How it Works Bonus: Real Time Streaming Location Updates Benchmarking Note (version): I wrote this originally as a Redis module in early 2014, then Redis included a modified version directly into official Redis releases in 2016. Note (implementation): The implementation included with Redis 3.2+
ã¿ãªãã¾ããã«ã¡ã¯ãæ± å ã§ãã Redis 3.0.0 ããæ£å¼ãªæ©è½ã¨ãã¦çãè¾¼ã¾ããRedis Clusterã®æ§ç¯ã¨åºæ¬çãªåä½ã«ã¤ãã¦ç´¹ä»ãã¾ãã â» æãããã¦æ¬æ¥ LINEããã®äºä¾ LINEã®100åè¶ /æ¥ã¡ãã»ã¼ã¸ãæ¯ããRedisã»HBaseã®ã¹ã±ã¼ã«ã¢ã¦ãã»ã¢ããæ¦ç¥ï¼A-5ï¼ #linedevday â Togetterã¾ã¨ã ã話é¡ã«ãªã£ã¦ãã¾ãããåè¨48TBãã®ã¡ã¢ãªãµã¤ãºã§éç¨ãã¦ããããã§ããåãã§ããã Redis Cluster ã¨ã¯ çä¼¼çãªãã«ããã¹ã¿æ§æ è¤æ°ãã¼ãã§ãã¼ã¿ãã·ã£ã¼ãã£ã³ã°ã§ãã ã¹ã¬ã¼ãæ§æãæ¡ç¨ããã°èé害æ§ã®åä¸ãå¯è½ æ¦ãä¸è¨ã®ãããªå 容ã§ãããã«ããã¹ã¿ããçä¼¼çãã¨ãã¦ããã®ã¯ãå®éã«ãã¼ã¿ãåãã¼ãã«ä¼æãã¦ããããã§ã¯ãªãããã§ããRedis Clusterã¯ãããã¬ã³ã¼ããã©ã®ãã¼ãã«ä¿åããããææ¡ãã¦ããããã¼
Hint: skip this section if you are familiar with message queues. You know how humans use text messages to communicate, right? I could write my wife "please get the milk at the store", and she maybe will reply "Ok message received, I'll get two bottles on my way home". A message queue is the same as human text messages, but for computer programs. For example a web application, when an user subscrib
å©ç¨ã§ããã³ãã¯ã·ã§ã³ã¨ä½¿ã£ã¦ãã³ãã¯ã·ã§ã³ _available_connections ã§å©ç¨ã§ããã³ãã¯ã·ã§ã³ã®list _created_connections ã§ä»ã¾ã§ä½ã£ãã³ãã¯ã·ã§ã³ã®ç·æ° _in_use_connection ã§ä»ä½¿ã£ã¦ããã³ãã¯ã·ã§ã³ã®set get_connectionã¡ã½ããã§_available_connectionsããå©ç¨ã§ããã³ãã¯ã·ã§ã³ãããã°popã§ã¨ã£ã¦ããããªããªãmake_connectionã§æ°è¦ã³ãã¯ã·ã§ã³ãã¤ããã_in_use_connectionã«addãã releaseã¡ã½ããã§ã³ãã¯ã·ã§ã³ãpookã«è¿å´ããã(_in_use_connectionããremoveãã_available_connectionsã¨append) disconnectã§poolã®éæ¾ å®éã§ã©ãã¤ããããã㯠StrictRedisã¯ã©ã¹
ãããããã£ã¦ããã©ãã ttlãæå®ãããã¼ã®å®åé¤ã¯ããã¼ã®åç §ããã£ãéåã¯100msæ¯ã«è¡ãããttlãæã¤å ¨ãã¼ããã®ã©ã³ãã ã«ãã¯ã¢ããã«ããæ¤æ»ã«ããè¡ããã æ ã«ãçãttlãæã¤ãã¼ã夿°åå¨ããå ´åã«ã¯ã(å®éã«åç §ããªãéã)å®åé¤ãéã«åããªããªã(æå³ããæéã«æ®çºããªã)äºããã ããã ããªãã¾ãåç §ããã°ãããã§ãã master-slaveæ§ææãslaveããè¦ããã¼ã®åé¤ã¯masterå´ããã®åé¤å½ä»¤ãç¡ããã°è¡ãããttl < 0ã¨ãªã£ããã¼ã«é¢ãã¦ãããã¯åæ§ã«æ±ããã æ ã«ãæ®çºãããã¹ããã¼ãslaveããåç §ããã¦ããå®åé¤ã¯è¡ãããã(masterå´ã®å®æå®åé¤ãéã«åã£ã¦ããªãå ´å)slaveã¯ãã®ã¾ã¾æ®çºããã¦ããã¹ããã¼ã®å¤ãè¿ãã¦ãã¾ã 対å¿ç㯠masterã«å¯¾ãã¦getãæãã master-slaveã¨ã¯ä½ã ã£ãã®ã⦠redi
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã¡ã³ããã³ã¹
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}