# Entities in Redis

An entity in a Redis store
([Entities in Redis](entities-in-redis.md)) is read and written
through the same queries and operations as any entity. Redis keeps no
indexes of its own, though, so only what Jadpo can keep a key or a set for
is allowed:

| Read or write | Allowed on a Redis entity |
|---|---|
| `get`, `create`, `update` and `delete` by `id` | Yes |
| An update by `id` adding to a stored whole number (`Counter.views + 1`) | Yes, as one Redis `increment` |
| A lifecycle and its transitions | No: a compile error; `expires_after:` takes its place |
| A query whose `where:` is equality on a `unique:` field | Yes: one record, from the key Jadpo keeps per unique field |
| A query whose `where:` is equality on one field in `indexes:` | Yes: a page, in creation order, from the set Jadpo keeps per value; counting the same |
| Policy grants that are equality on the record's own fields | Yes, checked after reading |
| Joins, `include`, ranges (`<`, `>`), `in`, `or`, ordering by any other field, `matches`, grants beyond simple equality | No: a compile error naming the reason and PostgreSQL as the alternative |

- **Expired records are hidden** from every read and update, as
  `visible:` hides records: a record past its `expires_after:` (counted
  from its last write) is not found, even in the moment before Redis
  removes it.
- **Concurrent change** is checked through a revision Jadpo keeps on each
  record: a write to a record loaded earlier fails as a concurrent change
  if the revision moved, and the action reruns as any action does.
- **One store per action** applies as everywhere: an action writing a Redis
  entity writes nothing in another store.

None of this is built yet: there is no Redis driver.
