SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
... perhaps the fastest NoSQL database in the world
What is Redis? 
Remote Dictionary Server 
●Often described as Key / Value NoSQL database 
●Better description: Data structures server 
●"Swiss Army Knife", collection of small useful data structures
Redis most important feature: High performance 
●In-memory database 
●Small codebase (20000 lines), native C 
●Connection via TCP or UNIX socket (no REST interface) 
●Limited choice of key mappings (5 types, 2 special types) 
●No nested data structures
More Redis features: 
●Persistence via Snapshotting and/or Journalling 
●Master/Slave chain database replication 
●Sentinel server monitoring 
●For real clustering -> redis-cluster project (beta, not production-ready yet) 
●Keys can have expiry time 
●Publish / Subscribe system
Sounds cool, but what are the Use Cases? 
●memcached++ 
●Statistics collection (downloads, hits, dwell times ...) 
●Log buffers 
●Task queues 
●Share state between processes (common 'blackboard') 
●Inter-process communication (channels)
Starting up Redis (on Debian) ... 
●Start the server:$> /etc/init.d/redis-server start 
●Configuration in: /etc/redis/redis.conf 
●Log files in:/var/log/redis/redis-server.log 
●Database dumps:/var/lib/redis/dump.rdb 
●Journal:/var/lib/redis/appendonly.aof
Accessing Redis ... 
●Command line tool:$> redis-cli 
●Socket access:$> telnet <redishost> 6379 
●Libraries: 
●redis-py (Python) 
●redis-rb (Ruby) 
●hiredis (C) 
●Jedis(Java) 
●... and many more (http://redis.io/clients)
More Redis tools ... 
●Benchmarking tool: $> redis-benchmark 
●Database consistency check: $> redis-check-dump <database dump> 
●Journal consistency check: $> redis-check-aof <aof file>
General commands: 
redis> PING# Check server connection 
PONG 
redis> INFO# Get server information 
# Server 
redis_version:2.8.13 
[...] 
redis> HELP # Command help 
[...] 
redis> SELECT 0# Select database #no 
OK 
redis> FLUSHDB# Clear current database 
OK 
redis> SHUTDOWN# Shutdown the server 
redis> QUIT# Quit the session
Redis stores data in key / value pairs, <value> one of: 
●String 
●Hash 
●List 
●Set 
●Sorted Set 
and two special structures (derivative of String): 
●Bitmaps 
●HyperLogLogs
Basic key / value pairs ('Strings') : 
redis> SET currentuser Max 
OK 
redis> GET currentuser 
"Max" 
redis> SET count 1 
OK 
redis> INCR count 
(integer) 2 
redis> GET count 
"2"
Hashes: 
redis> HSET users:123 name Max 
(integer) 1 
redis> HSET users:123 password Super_secret 
(integer) 1 
redis> HGET users:123 name 
"Max" 
redis> HGET users:123 password 
"Super_secret" 
redis> HKEYS users:123 
1) "name" 
2) "password"
Lists: 
redis> RPUSH users Max John Peter 
(integer) 3 
redis> LLEN users 
(integer) 3 
redis> LRANGE users 0 -1 
1) "Max" 
2) "John" 
3) "Peter" 
redis> LPOP users 
"Max" 
redis> LINDEX users 1 
"Peter"
Sets: 
redis> SADD favorites:news BBC NYT Wired 
(integer) 3 
redis> SADD favorites:tech Wired Heise 
(integer) 2 
redis> SINTER favorites:tech favorites:news 
1) "Wired" 
redis> SUNION favorites:tech favorites:news 
1) "Heise" 
2) "Wired" 
3) "NYT" 
4) "BBC"
Sorted Sets: (Entries sorted by Score) 
redis> ZADD favorites 15 BBC 10 NYT 80 Heise 50 Wired 
(integer) 4 
redis> ZSCORE favorites NYT 
"10" 
redis> ZRANGEBYSCORE favorites 40 inf 
1) "Wired" 
2) "Heise"
Key expiry: 
redis> SET icecream "Like ice in the sunshine" 
OK 
redis> EXPIRE icecream 20 
(integer) 1 
[... after 6 seconds ...] 
redis> TTL icecream 
(integer) 14 
redis> GET icecream 
"Like ice in the sunshine" 
[... after half a minute ...] 
redis> TTL icecream 
(integer) -1 
redis> GET icecream 
(nil)
Publish / Subscribe: 
redis> SUBSCRIBE channel 
Reading messages... (press Ctrl-C to quit) 
1) "subscribe" 
2) "channel" 
3) (integer) 1 
[...] 
1) "message" 
2) "channel" 
3) "Hi there!" 
redis> PUBSUB CHANNELS 
1) "channel" 
[...] 
redis> PUBLISH channel "Hi there!" 
(integer) 1 
Subscriber 
Publisher 
1 
2 
3 
4
Bitmaps: 
redis> SET bitkey "xff" 
OK 
redis> SETBIT bitkey 4 0 
(integer) 1 
redis> GET bitkey 
"xf7" 
redis> BITCOUNT bitkey 
(integer) 7
Lua scripting: 
-- usernames.lua 
-- Get field "name" from all users 
local users = redis.call('KEYS', 'users:*') 
local names = {} 
for num,key in ipairs(users) do 
names[num] = redis.call('HGET', key, 'name') 
end 
return names 
$> redis-cli EVAL "$(cat usernames.lua)" 0
Hyperloglogs: 
(approximate cardinality of huge sets with small memory demand) 
redis> PFADD hll a b c d a a 
(integer) 1 
redis> PFCOUNT hll 
(integer) 4 
redid> PFADD hll a a a a a 
(integer) 0 
redis> PFCOUNT hll 
(integer) 4
Master / Slave DB replication: 
$> redis-server --port 6380 --slaveof localhost 6379 --dbfilename dumpslave.rdb 
Master@localhost:6379 
Slave@localhost:6380 
dump.rdb 
dumpslave.rdb
Redis homepage: 
●www.redis.io 
Books: 
●The little Book of Redis (free) 
●Redis in Action (Manning) 
●Redis Cookbook (O'Reilly)
Questions from the SoCraTes 2014 session: (and my attempts at an answer, please feel free to correct) 
●Is it possible to access sets via wildcards? -> Doesn't seem so. Looks like only the KEYS command accepts wildcards. 
●Is there a performance penalty when accessing different database numbers? -> Didn't find anything, but there shouldn't be any significant penalty.
Questions from the SoCraTes 2014 session (cont.): (and my attempts at an answer, please feel free to correct) 
●Is there a mechanism to notify a client when a key is changed? -> Yes, 2.8 introduced Keyspace Notifications, see: http://redis.io/topics/notifications

Mais conteúdo relacionado

Mais procurados

Introduction to redis - version 2
Introduction to redis - version 2Introduction to redis - version 2
Introduction to redis - version 2Dvir Volk
 
Redis And python at pycon_2011
Redis And python at pycon_2011Redis And python at pycon_2011
Redis And python at pycon_2011sunilar0ra
 
Extend Redis with Modules
Extend Redis with ModulesExtend Redis with Modules
Extend Redis with ModulesItamar Haber
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisKnoldus Inc.
 
Caching solutions with Redis
Caching solutions   with RedisCaching solutions   with Redis
Caching solutions with RedisGeorge Platon
 
Riak at The NYC Cloud Computing Meetup Group
Riak at The NYC Cloud Computing Meetup GroupRiak at The NYC Cloud Computing Meetup Group
Riak at The NYC Cloud Computing Meetup Groupsiculars
 
Redis modules 101
Redis modules 101Redis modules 101
Redis modules 101Dvir Volk
 
glance replicator
glance replicatorglance replicator
glance replicatoririx_jp
 
Node.js - A practical introduction (v2)
Node.js  - A practical introduction (v2)Node.js  - A practical introduction (v2)
Node.js - A practical introduction (v2)Felix Geisendörfer
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisDvir Volk
 
Cassandra summit 2013 - DataStax Java Driver Unleashed!
Cassandra summit 2013 - DataStax Java Driver Unleashed!Cassandra summit 2013 - DataStax Java Driver Unleashed!
Cassandra summit 2013 - DataStax Java Driver Unleashed!Michaël Figuière
 
Redis data modeling examples
Redis data modeling examplesRedis data modeling examples
Redis data modeling examplesTerry Cho
 

Mais procurados (20)

Introduction to redis - version 2
Introduction to redis - version 2Introduction to redis - version 2
Introduction to redis - version 2
 
Redis And python at pycon_2011
Redis And python at pycon_2011Redis And python at pycon_2011
Redis And python at pycon_2011
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Extend Redis with Modules
Extend Redis with ModulesExtend Redis with Modules
Extend Redis with Modules
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Caching solutions with Redis
Caching solutions   with RedisCaching solutions   with Redis
Caching solutions with Redis
 
Hanganalyze presentation
Hanganalyze presentationHanganalyze presentation
Hanganalyze presentation
 
Riak at The NYC Cloud Computing Meetup Group
Riak at The NYC Cloud Computing Meetup GroupRiak at The NYC Cloud Computing Meetup Group
Riak at The NYC Cloud Computing Meetup Group
 
Redis modules 101
Redis modules 101Redis modules 101
Redis modules 101
 
glance replicator
glance replicatorglance replicator
glance replicator
 
Django cryptography
Django cryptographyDjango cryptography
Django cryptography
 
Node.js - A practical introduction (v2)
Node.js  - A practical introduction (v2)Node.js  - A practical introduction (v2)
Node.js - A practical introduction (v2)
 
Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
 
Node.js in production
Node.js in productionNode.js in production
Node.js in production
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Cassandra summit 2013 - DataStax Java Driver Unleashed!
Cassandra summit 2013 - DataStax Java Driver Unleashed!Cassandra summit 2013 - DataStax Java Driver Unleashed!
Cassandra summit 2013 - DataStax Java Driver Unleashed!
 
Redis data modeling examples
Redis data modeling examplesRedis data modeling examples
Redis data modeling examples
 
Nodejs - A-quick-tour-v3
Nodejs - A-quick-tour-v3Nodejs - A-quick-tour-v3
Nodejs - A-quick-tour-v3
 
Node.js - A Quick Tour II
Node.js - A Quick Tour IINode.js - A Quick Tour II
Node.js - A Quick Tour II
 

Semelhante a Fastest NoSQL Database Redis

REDIS intro and how to use redis
REDIS intro and how to use redisREDIS intro and how to use redis
REDIS intro and how to use redisKris Jeong
 
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, HerokuPostgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, HerokuRedis Labs
 
Session Control @ nolinux day
Session Control  @ nolinux daySession Control  @ nolinux day
Session Control @ nolinux dayWalter Traspadini
 
Introduction to redis
Introduction to redisIntroduction to redis
Introduction to redisTanu Siwag
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisRizky Abdilah
 
mar07-redis.pdf
mar07-redis.pdfmar07-redis.pdf
mar07-redis.pdfAnisSalhi3
 
Developing a Redis Module - Hackathon Kickoff
 Developing a Redis Module - Hackathon Kickoff Developing a Redis Module - Hackathon Kickoff
Developing a Redis Module - Hackathon KickoffItamar Haber
 
[db tech showcase Tokyo 2017] C23: Lessons from SQLite4 by SQLite.org - Richa...
[db tech showcase Tokyo 2017] C23: Lessons from SQLite4 by SQLite.org - Richa...[db tech showcase Tokyo 2017] C23: Lessons from SQLite4 by SQLite.org - Richa...
[db tech showcase Tokyo 2017] C23: Lessons from SQLite4 by SQLite.org - Richa...Insight Technology, Inc.
 
quickguide-einnovator-10-redis-admin
quickguide-einnovator-10-redis-adminquickguide-einnovator-10-redis-admin
quickguide-einnovator-10-redis-adminjorgesimao71
 
Advanced Replication
Advanced ReplicationAdvanced Replication
Advanced ReplicationMongoDB
 
Redis - for duplicate detection on real time stream
Redis - for duplicate detection on real time streamRedis - for duplicate detection on real time stream
Redis - for duplicate detection on real time streamCodemotion
 
Redis for duplicate detection on real time stream
Redis for duplicate detection on real time streamRedis for duplicate detection on real time stream
Redis for duplicate detection on real time streamRoberto Franchini
 
Redhat 6 & 7
Redhat 6 & 7Redhat 6 & 7
Redhat 6 & 7r9social
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisItamar Haber
 
Introducing redis
Introducing redisIntroducing redis
Introducing redisNuno Caneco
 

Semelhante a Fastest NoSQL Database Redis (20)

REDIS intro and how to use redis
REDIS intro and how to use redisREDIS intro and how to use redis
REDIS intro and how to use redis
 
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, HerokuPostgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
Postgres & Redis Sitting in a Tree- Rimas Silkaitis, Heroku
 
Redis introduction
Redis introductionRedis introduction
Redis introduction
 
Session Control @ nolinux day
Session Control  @ nolinux daySession Control  @ nolinux day
Session Control @ nolinux day
 
Introduction to redis
Introduction to redisIntroduction to redis
Introduction to redis
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Redis acc
Redis accRedis acc
Redis acc
 
mar07-redis.pdf
mar07-redis.pdfmar07-redis.pdf
mar07-redis.pdf
 
Developing a Redis Module - Hackathon Kickoff
 Developing a Redis Module - Hackathon Kickoff Developing a Redis Module - Hackathon Kickoff
Developing a Redis Module - Hackathon Kickoff
 
[db tech showcase Tokyo 2017] C23: Lessons from SQLite4 by SQLite.org - Richa...
[db tech showcase Tokyo 2017] C23: Lessons from SQLite4 by SQLite.org - Richa...[db tech showcase Tokyo 2017] C23: Lessons from SQLite4 by SQLite.org - Richa...
[db tech showcase Tokyo 2017] C23: Lessons from SQLite4 by SQLite.org - Richa...
 
Mini-Training: Redis
Mini-Training: RedisMini-Training: Redis
Mini-Training: Redis
 
Redis by-hari
Redis by-hariRedis by-hari
Redis by-hari
 
quickguide-einnovator-10-redis-admin
quickguide-einnovator-10-redis-adminquickguide-einnovator-10-redis-admin
quickguide-einnovator-10-redis-admin
 
Advanced Replication
Advanced ReplicationAdvanced Replication
Advanced Replication
 
Redis begins
Redis beginsRedis begins
Redis begins
 
Redis - for duplicate detection on real time stream
Redis - for duplicate detection on real time streamRedis - for duplicate detection on real time stream
Redis - for duplicate detection on real time stream
 
Redis for duplicate detection on real time stream
Redis for duplicate detection on real time streamRedis for duplicate detection on real time stream
Redis for duplicate detection on real time stream
 
Redhat 6 & 7
Redhat 6 & 7Redhat 6 & 7
Redhat 6 & 7
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Introducing redis
Introducing redisIntroducing redis
Introducing redis
 

Último

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 

Último (20)

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 

Fastest NoSQL Database Redis

  • 1. ... perhaps the fastest NoSQL database in the world
  • 2. What is Redis? Remote Dictionary Server ●Often described as Key / Value NoSQL database ●Better description: Data structures server ●"Swiss Army Knife", collection of small useful data structures
  • 3. Redis most important feature: High performance ●In-memory database ●Small codebase (20000 lines), native C ●Connection via TCP or UNIX socket (no REST interface) ●Limited choice of key mappings (5 types, 2 special types) ●No nested data structures
  • 4. More Redis features: ●Persistence via Snapshotting and/or Journalling ●Master/Slave chain database replication ●Sentinel server monitoring ●For real clustering -> redis-cluster project (beta, not production-ready yet) ●Keys can have expiry time ●Publish / Subscribe system
  • 5. Sounds cool, but what are the Use Cases? ●memcached++ ●Statistics collection (downloads, hits, dwell times ...) ●Log buffers ●Task queues ●Share state between processes (common 'blackboard') ●Inter-process communication (channels)
  • 6. Starting up Redis (on Debian) ... ●Start the server:$> /etc/init.d/redis-server start ●Configuration in: /etc/redis/redis.conf ●Log files in:/var/log/redis/redis-server.log ●Database dumps:/var/lib/redis/dump.rdb ●Journal:/var/lib/redis/appendonly.aof
  • 7. Accessing Redis ... ●Command line tool:$> redis-cli ●Socket access:$> telnet <redishost> 6379 ●Libraries: ●redis-py (Python) ●redis-rb (Ruby) ●hiredis (C) ●Jedis(Java) ●... and many more (http://redis.io/clients)
  • 8. More Redis tools ... ●Benchmarking tool: $> redis-benchmark ●Database consistency check: $> redis-check-dump <database dump> ●Journal consistency check: $> redis-check-aof <aof file>
  • 9. General commands: redis> PING# Check server connection PONG redis> INFO# Get server information # Server redis_version:2.8.13 [...] redis> HELP # Command help [...] redis> SELECT 0# Select database #no OK redis> FLUSHDB# Clear current database OK redis> SHUTDOWN# Shutdown the server redis> QUIT# Quit the session
  • 10. Redis stores data in key / value pairs, <value> one of: ●String ●Hash ●List ●Set ●Sorted Set and two special structures (derivative of String): ●Bitmaps ●HyperLogLogs
  • 11. Basic key / value pairs ('Strings') : redis> SET currentuser Max OK redis> GET currentuser "Max" redis> SET count 1 OK redis> INCR count (integer) 2 redis> GET count "2"
  • 12. Hashes: redis> HSET users:123 name Max (integer) 1 redis> HSET users:123 password Super_secret (integer) 1 redis> HGET users:123 name "Max" redis> HGET users:123 password "Super_secret" redis> HKEYS users:123 1) "name" 2) "password"
  • 13. Lists: redis> RPUSH users Max John Peter (integer) 3 redis> LLEN users (integer) 3 redis> LRANGE users 0 -1 1) "Max" 2) "John" 3) "Peter" redis> LPOP users "Max" redis> LINDEX users 1 "Peter"
  • 14. Sets: redis> SADD favorites:news BBC NYT Wired (integer) 3 redis> SADD favorites:tech Wired Heise (integer) 2 redis> SINTER favorites:tech favorites:news 1) "Wired" redis> SUNION favorites:tech favorites:news 1) "Heise" 2) "Wired" 3) "NYT" 4) "BBC"
  • 15. Sorted Sets: (Entries sorted by Score) redis> ZADD favorites 15 BBC 10 NYT 80 Heise 50 Wired (integer) 4 redis> ZSCORE favorites NYT "10" redis> ZRANGEBYSCORE favorites 40 inf 1) "Wired" 2) "Heise"
  • 16. Key expiry: redis> SET icecream "Like ice in the sunshine" OK redis> EXPIRE icecream 20 (integer) 1 [... after 6 seconds ...] redis> TTL icecream (integer) 14 redis> GET icecream "Like ice in the sunshine" [... after half a minute ...] redis> TTL icecream (integer) -1 redis> GET icecream (nil)
  • 17. Publish / Subscribe: redis> SUBSCRIBE channel Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "channel" 3) (integer) 1 [...] 1) "message" 2) "channel" 3) "Hi there!" redis> PUBSUB CHANNELS 1) "channel" [...] redis> PUBLISH channel "Hi there!" (integer) 1 Subscriber Publisher 1 2 3 4
  • 18. Bitmaps: redis> SET bitkey "xff" OK redis> SETBIT bitkey 4 0 (integer) 1 redis> GET bitkey "xf7" redis> BITCOUNT bitkey (integer) 7
  • 19. Lua scripting: -- usernames.lua -- Get field "name" from all users local users = redis.call('KEYS', 'users:*') local names = {} for num,key in ipairs(users) do names[num] = redis.call('HGET', key, 'name') end return names $> redis-cli EVAL "$(cat usernames.lua)" 0
  • 20. Hyperloglogs: (approximate cardinality of huge sets with small memory demand) redis> PFADD hll a b c d a a (integer) 1 redis> PFCOUNT hll (integer) 4 redid> PFADD hll a a a a a (integer) 0 redis> PFCOUNT hll (integer) 4
  • 21. Master / Slave DB replication: $> redis-server --port 6380 --slaveof localhost 6379 --dbfilename dumpslave.rdb Master@localhost:6379 Slave@localhost:6380 dump.rdb dumpslave.rdb
  • 22. Redis homepage: ●www.redis.io Books: ●The little Book of Redis (free) ●Redis in Action (Manning) ●Redis Cookbook (O'Reilly)
  • 23. Questions from the SoCraTes 2014 session: (and my attempts at an answer, please feel free to correct) ●Is it possible to access sets via wildcards? -> Doesn't seem so. Looks like only the KEYS command accepts wildcards. ●Is there a performance penalty when accessing different database numbers? -> Didn't find anything, but there shouldn't be any significant penalty.
  • 24. Questions from the SoCraTes 2014 session (cont.): (and my attempts at an answer, please feel free to correct) ●Is there a mechanism to notify a client when a key is changed? -> Yes, 2.8 introduced Keyspace Notifications, see: http://redis.io/topics/notifications