redi2casa 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 687c3c2c393c650329494de0b2b9768cef684f2f
4
+ data.tar.gz: 91f6d292884b3270a5ec8be1ce40d904bc68d851
5
+ SHA512:
6
+ metadata.gz: 2e3b99361d8f29511f3d4d5a4a84045a5ff80ec0fe292480ef1924c7fe75dcc931510770a89865dd8dc6bbe73cfac54bf05c17400f3d96c96e79645b2bac784d
7
+ data.tar.gz: c82d6e0646d02d0d9efe12be7c596cb19772afa6aaa20ac28a53f1709287fc227320f6554cca2144ac301b48cc58ce1b18ddb09c5122bfb2b1da541cf4613ebd
@@ -0,0 +1,18 @@
1
+ 0.0.4
2
+ -------
3
+
4
+ - Support for key-value pairs with expiry
5
+ commands supported - [set, get, setex]
6
+
7
+ - Support for set operations
8
+ commands supported - [sadd, smembers, spop, srem]
9
+ command supported (not supported by redis) - [sadd_with_expire] for expiring individual elements in a set
10
+
11
+ 0.0.3
12
+ -------
13
+
14
+ - Support hash operations
15
+ commands supported - [hgetall, hincrby, hget, hset]
16
+
17
+ - Support list operations
18
+ commands supported - [lpopm, ltrim, lpush, lrange, rpop, rpush]
@@ -0,0 +1,52 @@
1
+ r = Redi2casa.new([localhost], 'redi2casa')
2
+
3
+
4
+ # Do not mix counters and non-counter values in a single Hash
5
+
6
+ Hash - counters
7
+ ---------------
8
+
9
+ Increment: r.hicnrby "c", "e", 10
10
+ r.hget "c", "e" => 10
11
+ Decrement: r.hincrby "c", "e", -10
12
+ r.hget "c", "e" => 0
13
+ r.hincrby "c", "a", 100
14
+
15
+ r.hgetall "c" => { "a" => 100, "e" => 0 }
16
+
17
+ ## r.hset does not work for counters as yet ##
18
+
19
+ Hash - Non-counters
20
+ -------------------
21
+
22
+ r.hset "a", "b", "hello_world"
23
+ r.hset "a", "b", "bye_world"
24
+ r.hget "a", "b" => "hello_world"
25
+
26
+ r.hgetall "a" => {"a" => "hello_world", "b" => "bye_world"}
27
+
28
+ List
29
+ -----
30
+
31
+ r.lpush "a", "hello"
32
+ r.lpush "a", "hello1"
33
+ r.rpush "a", "hello3"
34
+
35
+ r.lrange "a", 0, -1 => ["hello", "hello1", "hello3"]
36
+ r.lpop "a" => "hello"
37
+ r.lrange "a", 0, -1 => ["hello1", "hello3"]
38
+
39
+ r.rpop "a" => "hello3"
40
+ r.lrange "a", 0, -1 => ["hello1"]
41
+
42
+
43
+ Key-value pairs
44
+ ---------------
45
+
46
+ r.set "a", "welcome"
47
+ r.get "a" => "welcome"
48
+
49
+ r.setex "a", 10, "c"
50
+ r.get "a" => "c"
51
+ ### after 10 seconds
52
+ r.get "a" => nil
data/README.md CHANGED
@@ -1,31 +1,31 @@
1
- # Redi2casa <a href="http://badge.fury.io/rb/redi2casa"><img src="https://badge.fury.io/rb/redi2casa@2x.png" alt="Gem Version" height="18"></a>
2
-
3
- Redis datastructures using Cassandra.
1
+ # Redi2casa <a href="http://badge.fury.io/rb/redi2casa"><img src="https://badge.fury.io/rb/redi2casa@2x.png" alt="Gem Version" height="18"></a>
2
+
3
+ Redis datastructures using Cassandra.
4
4
 
5
5
  ## Installation
6
6
 
7
7
  $ gem install redi2casa
8
8
 
9
- #### Configuring cassandra
9
+ #### Configuring cassandra
10
10
 
11
11
  ###### You need to install cassandra-2.0.x (please follow these instructions, https://gist.github.com/vireshas/7462447)
12
12
 
13
- From the cloned location execute:
13
+ From the cloned location execute:
14
14
  cqlsh -f cqlsh_cmds --debug
15
15
  cassandra-cli -k redi2casa -f cassandra_cli_cmds
16
16
 
17
17
  ## Usage
18
18
 
19
19
  require "redi2casa"
20
- r = Redi2casa.new ["localhost"], 'redi2casa'
21
-
20
+ r = Redi2casa.new ["localhost"], 'redi2casa'
21
+
22
22
  Available: [hset, hget, hincrby, lpush, ltrim, lpop, lrange, rpush, rpop]
23
23
 
24
- You should be passing an extra param(hash) when you call hget to retrieve a hash
24
+ You should be passing an extra param(hash) when you call hget to retrieve a hash
25
25
  r.hset "a", "b", "hello_world"
26
- r.hget "a", "b", "hash" #the last parameter is needed at the moment
27
-
28
- You can find more examples here: https://gist.github.com/vireshas/99bc322cf0ac42fbf7ee
26
+ r.hget "a", "b", "hash" #the last parameter is needed at the moment
27
+
28
+ You can find more examples here: https://gist.github.com/vireshas/99bc322cf0ac42fbf7ee
29
29
 
30
30
  ## Contributing
31
31
 
data/cqlsh_cmds CHANGED
@@ -2,3 +2,5 @@ CREATE KEYSPACE redi2casa WITH replication = {'class': 'SimpleStrategy', 'replic
2
2
  use redi2casa;
3
3
  create table hashes(namespace text primary key, key map<text, text>);
4
4
  create table lists(namespace text primary key, values list<text>);
5
+ create table keyvalue(key text primary key, value text);
6
+ create table sets(key text primary key, value set<text>);
@@ -0,0 +1,6 @@
1
+ class Redi2casa
2
+ ## Type can be sets, hashes, lists, keyvalue
3
+ def del key, type
4
+ @db_conn.execute("delete from #{type} where key = '#{key}'")
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ class Redi2casa
2
+ def get key
3
+ resp = @db_conn.execute("select * from keyvalue where key = '#{key}'")
4
+ parse_response(resp, "value")
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class Redi2casa
2
+ def sadd key, *members
3
+ @db_conn.execute("update sets set members = members + {'#{members.join("','")}'} where key = '#{key}'")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Redi2casa
2
+ def sadd_with_expire( key, ttl, members)
3
+ @db_conn.execute("update sets using ttl #{ttl} set members = members + {'#{members.join("','")}'} where key = '#{key}'")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Redi2casa
2
+ def set key, value
3
+ @db_conn.execute("UPDATE keyvalue set value = '#{value}' where key = '#{key}'")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Redi2casa
2
+ def setex key, ttl, value
3
+ @db_conn.execute("UPDATE keyvalue using TTL #{ttl} set value = '#{value}' where key = '#{key}'")
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class Redi2casa
2
+ def smembers key
3
+ resp = @db_conn.execute("select * from sets where key = '#{key}'")
4
+ resp.first["members"].to_a if resp.first
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ class Redi2casa
2
+ def spop key
3
+ members = smembers(key)
4
+ if members
5
+ srem key, members.first
6
+ members.first
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class Redi2casa
2
+ def srem key, member
3
+ @db_conn.execute("update sets set members = members - {'#{member}'} where key = '#{key}'")
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  class Redi2casa
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -6,7 +6,7 @@ require 'redi2casa/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "redi2casa"
8
8
  spec.version = Redi2casa::VERSION
9
- spec.authors = ["vireshas"]
9
+ spec.authors = ["vireshas", "rajofchennai"]
10
10
  spec.email = ["asviresh@gmail.com"]
11
11
  spec.description = %q{Providing Redis data-structures using Cassandra}
12
12
  spec.summary = %q{Moving redis calls to equivalent cassandra calls can be a pain unless you use this gem}
metadata CHANGED
@@ -1,78 +1,70 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redi2casa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - vireshas
8
+ - rajofchennai
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-14 00:00:00.000000000 Z
12
+ date: 2013-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cql-rb
16
16
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
17
  requirements:
19
- - - ! '>='
18
+ - - '>='
20
19
  - !ruby/object:Gem::Version
21
20
  version: '0'
22
21
  type: :runtime
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
- - - ! '>='
25
+ - - '>='
28
26
  - !ruby/object:Gem::Version
29
27
  version: '0'
30
28
  - !ruby/object:Gem::Dependency
31
29
  name: cql-rb
32
30
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
31
  requirements:
35
- - - ! '>='
32
+ - - '>='
36
33
  - !ruby/object:Gem::Version
37
34
  version: '0'
38
35
  type: :development
39
36
  prerelease: false
40
37
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
- - - ! '>='
39
+ - - '>='
44
40
  - !ruby/object:Gem::Version
45
41
  version: '0'
46
42
  - !ruby/object:Gem::Dependency
47
43
  name: bundler
48
44
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
45
  requirements:
51
- - - ! '>='
46
+ - - '>='
52
47
  - !ruby/object:Gem::Version
53
48
  version: '0'
54
49
  type: :development
55
50
  prerelease: false
56
51
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
52
  requirements:
59
- - - ! '>='
53
+ - - '>='
60
54
  - !ruby/object:Gem::Version
61
55
  version: '0'
62
56
  - !ruby/object:Gem::Dependency
63
57
  name: rake
64
58
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
59
  requirements:
67
- - - ! '>='
60
+ - - '>='
68
61
  - !ruby/object:Gem::Version
69
62
  version: '0'
70
63
  type: :development
71
64
  prerelease: false
72
65
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
66
  requirements:
75
- - - ! '>='
67
+ - - '>='
76
68
  - !ruby/object:Gem::Version
77
69
  version: '0'
78
70
  description: Providing Redis data-structures using Cassandra
@@ -83,6 +75,8 @@ extensions: []
83
75
  extra_rdoc_files: []
84
76
  files:
85
77
  - .gitignore
78
+ - Changes.md
79
+ - Examples.md
86
80
  - Gemfile
87
81
  - Gemfile.lock
88
82
  - LICENSE.txt
@@ -91,6 +85,8 @@ files:
91
85
  - cassandra_cli_cmds
92
86
  - cqlsh_cmds
93
87
  - lib/redi2casa.rb
88
+ - lib/redi2casa/del.rb
89
+ - lib/redi2casa/get.rb
94
90
  - lib/redi2casa/hget.rb
95
91
  - lib/redi2casa/hgetall.rb
96
92
  - lib/redi2casa/hincrby.rb
@@ -101,38 +97,38 @@ files:
101
97
  - lib/redi2casa/ltrim.rb
102
98
  - lib/redi2casa/rpop.rb
103
99
  - lib/redi2casa/rpush.rb
100
+ - lib/redi2casa/sadd.rb
101
+ - lib/redi2casa/sadd_with_expire.rb
102
+ - lib/redi2casa/set.rb
103
+ - lib/redi2casa/setex.rb
104
+ - lib/redi2casa/smembers.rb
105
+ - lib/redi2casa/spop.rb
106
+ - lib/redi2casa/srem.rb
104
107
  - lib/redi2casa/version.rb
105
108
  - redi2casa.gemspec
106
109
  homepage: https://github.com/vireshas/redi2casa
107
110
  licenses:
108
111
  - MIT
112
+ metadata: {}
109
113
  post_install_message:
110
114
  rdoc_options: []
111
115
  require_paths:
112
116
  - lib
113
117
  required_ruby_version: !ruby/object:Gem::Requirement
114
- none: false
115
118
  requirements:
116
- - - ! '>='
119
+ - - '>='
117
120
  - !ruby/object:Gem::Version
118
121
  version: '0'
119
- segments:
120
- - 0
121
- hash: 1475517929010687912
122
122
  required_rubygems_version: !ruby/object:Gem::Requirement
123
- none: false
124
123
  requirements:
125
- - - ! '>='
124
+ - - '>='
126
125
  - !ruby/object:Gem::Version
127
126
  version: '0'
128
- segments:
129
- - 0
130
- hash: 1475517929010687912
131
127
  requirements: []
132
128
  rubyforge_project:
133
- rubygems_version: 1.8.25
129
+ rubygems_version: 2.1.11
134
130
  signing_key:
135
- specification_version: 3
131
+ specification_version: 4
136
132
  summary: Moving redis calls to equivalent cassandra calls can be a pain unless you
137
133
  use this gem
138
134
  test_files: []