You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jul 11, 2021. It is now read-only.
Copy file name to clipboardExpand all lines: README.md
+33-3Lines changed: 33 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,7 +71,7 @@ You will be able to manage and search for data.
71
71
72
72
RediSQL is a Redis module, hence you will need a modern version of [Redis (> 5.0)][redis-download] and the RediSQL .so file.
73
73
74
-
You can obtain RediSQL directly [from our store.](https://payhip.com/RediSQL)
74
+
You can obtain RediSQL directly [from our store.][store]
75
75
76
76
Alternative you can download the module from [github release.](https://github.com/RedBeardLab/rediSQL/releases)
77
77
@@ -89,6 +89,8 @@ All the commands are documented in [the references.][api]
89
89
90
90
To explore RediSQL you can use the official client `redis-cli` which it will connect to the running server.
91
91
92
+
The free version requires connection to our servers, make sure to set up your firewall appropriately.
93
+
92
94
## Docker image
93
95
94
96
Moreover, also a Docker image is provide. Is sufficient to run the image `siscia/redisql` to start the Redis server with RediSQL loaded.
@@ -161,6 +163,27 @@ OK
161
163
4) "ccc"
162
164
127.0.0.1:6379>
163
165
```
166
+
167
+
## Telemetrics and commercial product
168
+
169
+
From version 1.0.0 we move away from an open-core model where some features where not released as open source to a different model that force not-paying user to send telemetrics data to our servers.
170
+
This allow us to release all the features of RediSQL as open source while retaining our possibilities to fund the project.
171
+
[The full announcement on our blog][release-1.0.0].
172
+
173
+
Of course the telemetrics data are not sensible (it is the result of the `REDISQL.STATISTICS` command) and we took all the precaution to allow smooth operation of the telementrics, [more details in the technical blog post.][redisql-telemetrics]
174
+
175
+
The main idea behind forced telemetrics is that small users won’t be bothered by them too much. Moreover they usually have the resource, knowledge and will to set up their own firewall and invest time instead of money.
176
+
177
+
All the other users can instead use the PRO version, the PRO version does not requires any connectivity to our servers, all the telemetrics part is simply not compiled into the code.
178
+
179
+
We hope to have strike a good balance with this new policy.
180
+
181
+
For a company is a bargain to just paid to don’t have one more thing to keep track of.
182
+
183
+
For small users we allow them to use all the PRO features of RediSQL while just requiring a little more time and attention, of course small users can purchase the PRO version as well.
184
+
185
+
The PRO version -- no telemetrics required -- version of RediSQL [can be purchased on our store][store].
186
+
164
187
## Documentation
165
188
166
189
The complete API are explained in the official documentation that you can access here: [API References][api]
@@ -169,12 +192,19 @@ The complete API are explained in the official documentation that you can access
169
192
170
193
I am going to accept pull request here on github.
171
194
172
-
## License
195
+
## License and commercial product
196
+
197
+
This software is released under a custom license inspired by the MIT License.
198
+
199
+
The "RediSQL License" add one clause to the MIT license that simply requires that you leave the telemetrics alone.
173
200
174
-
This software is licensed under the AGPL-v3, it is possible to purchase more permissive licenses.
201
+
It is possible to purchase more permissive licenses.
Copy file name to clipboardExpand all lines: doc/docs/pro.md
+9-61Lines changed: 9 additions & 61 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,74 +4,22 @@ This document explains the architecture and principle of working of RediSQL PRO.
4
4
5
5
You can purchase RediSQL PRO, along with support [**here.**][signup]
6
6
7
-
Motivation and details about the cost are [described here][pro_motivations].
8
-
9
7
## Main difference
10
8
11
-
The PRO version offers two main features: **non blocking command** and **replication**
12
-
13
-
### Non-blocking command
14
-
15
-
Most command in RediSQL, all but `REDISQL.CREATE_DB`, are blocking command.
16
-
17
-
This means that Redis block the client, pass the command to a background thread that actually executed it and finally the result is returned to client unblocking it.
18
-
19
-
This works great in most cases, the main thread of Redis is free of doing other work (like answering standard redis command), there is no difference from the client point of view and your machine can use more than the single thread of redis to work for you.
20
-
21
-
However, sometimes you want to have non-blocking commands.
22
-
23
-
The blocking command will be executed in the main redis thread, this means that no other works will be done by Redis while executing your command.
24
-
25
-
We could expect the non-blocking command to be slightly faster (smaller latency) than the blocking one since there is no need for coordination between threads.
26
-
27
-
Finally, non-blocking commands are necessary for replication.
28
-
29
-
Non-blocking commands are invoke adding the `.NOW` suffix.
30
-
31
-
As an example, instead of `REDISQL.EXEC` that is a blocking command you can use `REDISQL.EXEC.NOW` to use the non-blocking version.
32
-
33
-
#### When to use non-blocking commands
34
-
35
-
Non-blocking command takes the priority over blocking one.
36
-
37
-
Said so, generally, we are expecting users to use mostly the blocking commands.
38
-
39
-
However, if you need a very quick insert or a very quick lookup, then you should use the non-blocking version.
40
-
41
-
It is a bad idea to use non blocking commands for slow statements/query.
42
-
43
-
This because while you are executing a non-blocking command the main redis thread cannot do anything else, this means it cannot answer other redis commands.
44
-
45
-
### Replication
46
-
47
-
Redis offers two main methods for persisting data on disk so that in case of power failure of disastrous failure your data are reasonably safe.
48
-
49
-
RediSQL implement RDB persistency on the community version and AOF replication on the PRO version.
50
-
51
-
For the details of this two method, I suggest to read the Redis Documentation [on this page][redis_persistence].
52
-
53
-
The mechanism behind AOF replication is exactly the same behind cluster replication used by redis. The same **bytes** used for AOF replication are also used for cluster replication, just send over different sockets.
54
-
55
-
For details about cluster replication you can consult the official Redis Documentation on [cluster][redis_cluster] and on [replication][redis_replication]
56
-
57
-
The PRO version, indeed, implements both AOF and cluster replication.
58
-
59
-
#### Effective use of Replication
60
-
61
-
In order to use replication effectively, you should understand a few simple concepts.
62
-
63
-
If a command is replicated it means that it could be re-executed.
64
-
65
-
It is **vital** to replicate commands that change the data you are storing, however, is pointless and wasteful to replicate commands that do not apply any change to the data.
9
+
The PRO version comes without telemetrics.
66
10
67
-
You definitely want to replicate every INSERTs, UPDATEs or DELETEs while you should avoid replicating SELECTs.
11
+
The community version requires RediSQL to periodically send telemetrics information to our server otherwise RediSQL shut itself down.
12
+
This is not require by the PRO version.
68
13
69
-
Replicated commands are usually executed either when you are re-loading your dataset after some sort of failures or in slaves/replica with a train of other replicated commands is coming right after.
14
+
## Telemetrics data
70
15
71
-
Consider what happens if you replicate a big SELECT. RediSQL is going to execute it and it is going to take some time, this while your application is waiting for redis to restart or when a train of replicated commands are piling up in the slaves/replicas buffers. And all this just for discard the result of the SELECT itself.
16
+
The data send to our servers are definitely not critical data, indeed we ship the result of the `REDISQL.STATISTICS` commands.
17
+
Moreover we took all the precaution to make sure that our user are not impacted by possible errors on our side replicating all pieces of our infrastructure. [More details about the technical implementation on our blog.][redisql-telemetrics]
72
18
73
-
In order to avoid this effect is a good idea to use the query commands whenever possible ([`REDISQL.QUERY`][query] and [`REDISQL.QUERY_STATEMENT`][query_statement]), this command **do not** replicate and are marked as `readonly` which means that can be executed also on slaves/replicas providing interesting primitives of load balancing. (Eg. You could write on the master and read on the slaves.)
19
+
[More details behind our motivation in our blog post.][release-1.0.0]
0 commit comments