SlideShare a Scribd company logo
1 of 27
From Client to   developer   execution


           Disclaimer
Disclaimer
This lecture and slides should be used only in
 humor, and that's how it should be understood
If you find it offensive in any way, please do not
   use this slides, and go out from the lecture !
What does people think Redis is ?
So what is Redis ?
Open source in memory fast binary safe database
 that support the following:
  Key Value information
  Arrays/Lists and nested lists
  Sets/Sorted Sets
  Hashes
  Type of Message Queue
  Distributed work
Ah, yes, but what is Redis ?


        Hello my name is
    REmote Dictionary Server

          prepare to die
OK, it's a Key Value database
    Are you happy now ?
How I met Redis ?


 I needed to use it with an Object Pascal based
Project, and there was no Object Pascal client …

          So I started to work on one:
     https://github.com/ik5/redis_client.fpc

     And I still do (when I have free time ...)
What is the first rule of Redis ?
You do not talk about Redis …

Redis's developer created most client
 libraries that exists today …

The documentation that you see, well it's
 can be better:

  What you read and what that is
    implemented are different things
    (sometimes)

  There are a lot of missing information,
So how do you write a client for
              Redis ?
Reading the Protocol documentation (well, duh …)
Finding that some of the real implementation is
  different then the protocol itself
Wishing a slow death to the developer
Bitching about it at your blog (posts)
Asking yourself: why don't you use a dynamic
 programming language ...
Sitting down and solving the problems
Why ?


 It's very readable programming language
 It's string types (yes in plural) are easy to use
 Because it is one of the best compiled programming
languages ever existed

Because I can !
Can you show us an example ?
…
var
  my_command : TRedisAbstractCommands;
…

writeln(my_command.ParamsToStr(['a', 3.14, 
  False]));
…
(* output as string :
   arn3.14rnFalsern *)
In soviet Russia several ways implement you
Four ways to implement the client:
  Thinking like dynamic language (but code in Pascal)
  Thinking in C (but code in Pascal)
  Thinking in Java/C# (but code in Pascal)
  Think in Pascal …
I read few implementation of the clients:
   Lua, Ruby, Perl, Python, Java and C
Decided on the 4th way as the proper way
Research and documentation
 by me on each command !
“To infinity and beyond”
Data types
                             TPersistent




                          TRedisReturnType




 TRedisNullReturnType                        TRedisNumericReturnType


TRedisStatusReturnType                        TRedisErrorReturnType

                                             TRedisMultiBulkReturnTyp
TRedisBulkReturnType
                                                         e
There shell be a command !
                                 TRedisObject




  TRedisParser                                            TRedisAbstractCommands




Command group      Command group                Command group    Command group




                 Command group              Command group
Few more words regarding commands

 Every new version of Redis has new/changes to
  commands.
 Can't support such changes for long time
 So I my library helping you, by allowing you to
  call commands, never existed when I wrote
  the client, without going insane !

 OK, You might go insane, but not because of my
  library...
Sockets



 TSynaClient




  TRedisIO
Debug, Errors and log files
Each class can have it's own log file for
 debug/error or no file at all !
You can use also the same logger for every
 class
Your own error handlers using callbacks, or just
 let exception raise up
The final slide
Should we use Redis ?
The final slide
Should we use Redis ?
Oh fuck, it's a Perl lecture, I forgot to add some
 details on that ...
Redis and Perl
main module: https://metacpan.org/module/Redis
some benchmarks:
  http://blogs.perl.org/users/wolfgang_kinkeldei/2012/01
servers, plugins, and interesting stuff:
  https://metacpan.org/module/Redis::Queue
  https://metacpan.org/module/Nginx::Redis
  https://metacpan.org/module/Redis::hiredis
  https://metacpan.org/module/Redis::Client
  https://metacpan.org/module/AnyEvent::Redis
  https://metacpan.org/module/Protocol::Redis
  https://metacpan.org/module/Tie::Redis
  https://metacpan.org/module/MojoX::Redis
The final slide
Right, so what did I asked ?
The final slide
Should we use Redis ?



 A   Yes
 B   No
 C   All of the above
Credits
Angry bird
Excited
Bored
MemCached
Redis
Buzz Lightyear
Questions ?

More Related Content

What's hot

TypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack DevelopersTypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack DevelopersRutenis Turcinas
 
Power Leveling your TypeScript
Power Leveling your TypeScriptPower Leveling your TypeScript
Power Leveling your TypeScriptOffirmo
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorialknoppix
 
Learning at the Speed of JavaScript
Learning at the Speed of JavaScriptLearning at the Speed of JavaScript
Learning at the Speed of JavaScriptJake Witcher
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practicesfelixbillon
 
Code quality tools for dev
Code quality tools for devCode quality tools for dev
Code quality tools for devDeepu S Nath
 

What's hot (10)

Ruby Hell Yeah
Ruby Hell YeahRuby Hell Yeah
Ruby Hell Yeah
 
TypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack DevelopersTypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack Developers
 
Power Leveling your TypeScript
Power Leveling your TypeScriptPower Leveling your TypeScript
Power Leveling your TypeScript
 
Lfnw2016
Lfnw2016Lfnw2016
Lfnw2016
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
 
Learning at the Speed of JavaScript
Learning at the Speed of JavaScriptLearning at the Speed of JavaScript
Learning at the Speed of JavaScript
 
Typescript Basics
Typescript BasicsTypescript Basics
Typescript Basics
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practices
 
Code quality tools for dev
Code quality tools for devCode quality tools for dev
Code quality tools for dev
 
Object Calisthenics
Object CalisthenicsObject Calisthenics
Object Calisthenics
 

Similar to Redis - from client to execution

Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?mikaelbarbero
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...IndicThreads
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Espen Brækken
 
Test Driven Infrastructure
Test Driven InfrastructureTest Driven Infrastructure
Test Driven InfrastructureArthur Maltson
 
Low maintenance perl notes
Low maintenance perl notesLow maintenance perl notes
Low maintenance perl notesPerrin Harkins
 
Culture And Aesthetic Revisited
Culture And Aesthetic RevisitedCulture And Aesthetic Revisited
Culture And Aesthetic RevisitedAdam Keys
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
 
Workin ontherailsroad
Workin ontherailsroadWorkin ontherailsroad
Workin ontherailsroadJim Jones
 
WorkinOnTheRailsRoad
WorkinOnTheRailsRoadWorkinOnTheRailsRoad
WorkinOnTheRailsRoadwebuploader
 
Fun with Ruby and Redis
Fun with Ruby and RedisFun with Ruby and Redis
Fun with Ruby and Redisjavier ramirez
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleTom Croucher
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftTalentica Software
 
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)PVS-Studio
 

Similar to Redis - from client to execution (20)

Redis and Ohm
Redis and OhmRedis and Ohm
Redis and Ohm
 
Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?
 
How to code
How to codeHow to code
How to code
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...
 
Php’s guts
Php’s gutsPhp’s guts
Php’s guts
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex
 
Test Driven Infrastructure
Test Driven InfrastructureTest Driven Infrastructure
Test Driven Infrastructure
 
Introduction to-php
Introduction to-phpIntroduction to-php
Introduction to-php
 
Avro
AvroAvro
Avro
 
Low maintenance perl notes
Low maintenance perl notesLow maintenance perl notes
Low maintenance perl notes
 
Culture And Aesthetic Revisited
Culture And Aesthetic RevisitedCulture And Aesthetic Revisited
Culture And Aesthetic Revisited
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
 
Workin ontherailsroad
Workin ontherailsroadWorkin ontherailsroad
Workin ontherailsroad
 
WorkinOnTheRailsRoad
WorkinOnTheRailsRoadWorkinOnTheRailsRoad
WorkinOnTheRailsRoad
 
Fun with Ruby and Redis
Fun with Ruby and RedisFun with Ruby and Redis
Fun with Ruby and Redis
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scale
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thrift
 
Introduction to redis
Introduction to redisIntroduction to redis
Introduction to redis
 
ruby pentest
ruby pentestruby pentest
ruby pentest
 
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)
 

Recently uploaded

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Recently uploaded (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Redis - from client to execution

  • 1. From Client to developer execution Disclaimer
  • 2. Disclaimer This lecture and slides should be used only in humor, and that's how it should be understood If you find it offensive in any way, please do not use this slides, and go out from the lecture !
  • 3. What does people think Redis is ?
  • 4. So what is Redis ? Open source in memory fast binary safe database that support the following: Key Value information Arrays/Lists and nested lists Sets/Sorted Sets Hashes Type of Message Queue Distributed work
  • 5. Ah, yes, but what is Redis ? Hello my name is REmote Dictionary Server prepare to die
  • 6.
  • 7. OK, it's a Key Value database Are you happy now ?
  • 8. How I met Redis ? I needed to use it with an Object Pascal based Project, and there was no Object Pascal client … So I started to work on one: https://github.com/ik5/redis_client.fpc And I still do (when I have free time ...)
  • 9. What is the first rule of Redis ? You do not talk about Redis … Redis's developer created most client libraries that exists today … The documentation that you see, well it's can be better: What you read and what that is implemented are different things (sometimes) There are a lot of missing information,
  • 10. So how do you write a client for Redis ? Reading the Protocol documentation (well, duh …) Finding that some of the real implementation is different then the protocol itself Wishing a slow death to the developer Bitching about it at your blog (posts) Asking yourself: why don't you use a dynamic programming language ... Sitting down and solving the problems
  • 11.
  • 12. Why ? It's very readable programming language It's string types (yes in plural) are easy to use Because it is one of the best compiled programming languages ever existed Because I can !
  • 13. Can you show us an example ? … var   my_command : TRedisAbstractCommands; … writeln(my_command.ParamsToStr(['a', 3.14,  False])); … (* output as string :    arn3.14rnFalsern *)
  • 14.
  • 15. In soviet Russia several ways implement you Four ways to implement the client: Thinking like dynamic language (but code in Pascal) Thinking in C (but code in Pascal) Thinking in Java/C# (but code in Pascal) Think in Pascal … I read few implementation of the clients: Lua, Ruby, Perl, Python, Java and C Decided on the 4th way as the proper way Research and documentation by me on each command ! “To infinity and beyond”
  • 16. Data types TPersistent TRedisReturnType TRedisNullReturnType TRedisNumericReturnType TRedisStatusReturnType TRedisErrorReturnType TRedisMultiBulkReturnTyp TRedisBulkReturnType e
  • 17. There shell be a command ! TRedisObject TRedisParser TRedisAbstractCommands Command group Command group Command group Command group Command group Command group
  • 18. Few more words regarding commands Every new version of Redis has new/changes to commands. Can't support such changes for long time So I my library helping you, by allowing you to call commands, never existed when I wrote the client, without going insane ! OK, You might go insane, but not because of my library...
  • 20. Debug, Errors and log files Each class can have it's own log file for debug/error or no file at all ! You can use also the same logger for every class Your own error handlers using callbacks, or just let exception raise up
  • 21. The final slide Should we use Redis ?
  • 22. The final slide Should we use Redis ? Oh fuck, it's a Perl lecture, I forgot to add some details on that ...
  • 23. Redis and Perl main module: https://metacpan.org/module/Redis some benchmarks: http://blogs.perl.org/users/wolfgang_kinkeldei/2012/01 servers, plugins, and interesting stuff: https://metacpan.org/module/Redis::Queue https://metacpan.org/module/Nginx::Redis https://metacpan.org/module/Redis::hiredis https://metacpan.org/module/Redis::Client https://metacpan.org/module/AnyEvent::Redis https://metacpan.org/module/Protocol::Redis https://metacpan.org/module/Tie::Redis https://metacpan.org/module/MojoX::Redis
  • 24. The final slide Right, so what did I asked ?
  • 25. The final slide Should we use Redis ? A Yes B No C All of the above