redi2casa 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: []