Showing posts with label Redis. Show all posts
Showing posts with label Redis. Show all posts

Sunday, October 5, 2014

Introduction to Redis with Peter Hayes

Hack Reactor alumnus, Peter Hayes, gives a talk on an introduction to Redis. The presentation covers:

• What are key-value stores and what is Redis?
• Why use them? What are the advantages compared to standard databases?
• Setting up a connection in node
• The Redis API
• Basic Operations
• Hashes
• Sets
• Lists

The lecture is a combination of slides and a bit of live coding.


Friday, August 1, 2014

#redis Matt Stancliff talks about the challenges on a large open source project.

Redis is a popular key-value store used by many companies. Matt Stancliff, a Redis Core Contributor, talks about the challenges with working on a large open source project. Takes your 30 minutes, but worth it.

Update:
At first I must say that Matt is a bit prejudiced about MongoDb. but still a "must watch" video if you are interested in open source development and redis.



Tuesday, March 26, 2013

Redis Transactions ve Rollback

Azizim transaction denildiğinde iki ana başlık temeldir "Rollback" ve "Rollforward" [1]. Hatta bana sorarsan en önemli olay rollbak olayıdır. Bir şeyler fena halde sarpa sararsa bir şeyler kötü giderse rollback eylersin. 
Lakin benim de pek sevdiğim Redis'de işler böyle yürümüyor. 
Redis özelliklerinni listelendiği sayfada "Transaction" da yer alıyor : 

Fakat redis transaction ile şunu kastediyor :
  1. Failsafe query
  2. Sorgularınızın ya tamamı çalışır ya da hiç biri çalışmaz.
Aklınızda olsun her transaction özelliği rollback özelliği var demek olmuyor. Redis'de kendiniz rollback yapacaksınız. 
Redisin bu duruma mantıklı bir açıklaması var tabi 

Why Redis does not support roll backs?
If you have a relational databases background, the fact that Redis commands can fail during a transaction, but still Redis will execute the rest of the transaction instead of rolling back, may look odd to you.
However there are good opinions for this behavior:
  • Redis commands can fail only if called with a wrong syntax (and the problem is not detectable during the command queueing), or against keys holding the wrong data type: this means that in practical terms a failing command is the result of a programming errors, and a kind of error that is very likely to be detected during development, and not in production.
  • Redis is internally simplified and faster because it does not need the ability to roll back.
An argument against Redis point of view is that bugs happen, however it should be noted that in general the roll back does not save you from programming errors. For instance if a query increments a key by 2 instead of 1, or increments the wrong key, there is no way for a rollback mechanism to help. Given that no one can save the programmer from his errors, and that the kind of errors required for a Redis command to fail are unlikely to enter in production, we selected the simpler and faster approach of not supporting roll backs on errors.


Konuyla ilgili diğer bağlantılar






[1] Transaction processing : http://en.wikipedia.org/wiki/Transaction_processing

Friday, February 22, 2013

Noqsl Meta - Cassandra, Mongodb, CouchDB, Redis,ElasticSearch, Kyoto Tycoon, Neo4j

Cassandra, Mongodb, CouchDB, Redis,ElasticSearch, Kyoto Tycoon, Neo4j yeteneklerine pek değinmeden genel bilgilerini karşılaştırmalı sunan bir tablodur. Bir performans karsilastirmasi degildir!

MongoDB 

Yazıldığı Dil: C++
Lisans: AGPL
Veri İletişim Protokolü: binary (BSON)
En iyi kullanım örneği :  Dinamik veri yapisi ihtiyaclarinizda. Surekli yeni diskler ve makinelerle genisletmeniz gerekecek derecede fazla buyuyen veriniz oldugunda.  CouchDb nin cabuk buyuen ve kolay kontrol edilebilen bir haline ihtiyac duydugunuzda.

Redis

Yazıldığı Dil: C/C++
Lisans: BSD
Veri İletişim Protokolü: Telnet-like
En iyi kullanım örneği :  Disk-backed in-memory database en onemli ozelligi. MongoDb orneginden oldugu gibi surekli artan verilerde degil ancak surekli ve sikca degisen verilerde kullanilmasi onerilir..

CouchDB

Yazıldığı Dil: Erlang
Lisans: Apache
Veri İletişim Protokolü: HTTP/REST
En iyi kullanım örneği :  Bi-directional (!) replication en onemli ozelligi. MongoDb de belirtigi gibi cok ve surekli buyuen datalar olmadiginda ama yine esnek bir data yapisi ve ayni zamanda versiyonlama çok önemli oldugunda.

Cassandra (1.2)

Yazıldığı Dil: Java
Lisans: Apache
Veri İletişim Protokolü: Thrift & custom binary CQL3

En iyi kullanım örneği :  Write/Read orani çok çok yuksekse ve yazma hizi onemliyse (mesela loglar). Java ile cok iyi hider

All nodes are similar, as opposed to Hadoop/HBase
Cross-datacenter replication
Querying by column, range of keys (Requires indices on anything that you want to search on)
Can be used as a distributed hash-table, with an "SQL-like" language, CQL (but no JOIN!)



Neo4j (V1.5M02)

Yazıldığı Dil: Java
Lisans: GPL, some features AGPL/commercial
Veri İletişim Protokolü: HTTP/REST (or embedding in Java)

En iyi kullanım örneği :  Graph islemlerinizde harika cozum sunar!
Full ACID
For searching routes in social relations, public transport links, road maps, or network topologies.

ElasticSearch 

Yazıldığı Dil: Java
Lisans: Apache
Veri İletişim Protokolü: JSON over HTTP (Plugins: Thrift, memcached)
Stores JSON documents

En iyi kullanım örneği :  Esnek dokumanlariniz ve gelismis arma ihtiyaclariniz oldugunda. fuzzy search ihtiyaci. Geodistance ihtiyaci oldugunda.

Kyoto Tycoon (0.9.56)

Yazıldığı Dil: C++
Lisans: GPL
Veri İletişim Protokolü: HTTP (TSV-RPC or REST)

En iyi kullanım örneği :  Memcache'e alternatif daha yetenekli bir seyler aradiginizda cozum olacaktir.

Hot backup, asynchronous replication (MongoDb'de de gelismis olarak olan bir ozellik.)
background snapshot of in-memory databases
Auto expiration (can be used as a cache server) (Redis'de de olan bir ozellik)



Thanks to Kristóf