1. Basic Concepts

Redis is a NoSql database. Its characteristics are non-structured, non-relational, no SQL grammar. Other NoSQL includes MongoDB, elaticsearch. Besides, Redis only has base transaction.

Redis stores key-value, runs in single thread with low latency. Data persistence is supported in case of blackout.

2. Install

See Redis. For mac os, we can just run

brew install  redis

3. Basic Commands

brew services start redis # start redis
redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> config set requirepass 123456 # set password
127.0.0.1:6379> AUTH 123456


127.0.0.1:6379> set student jack    # set or add
127.0.0.1:6379> get student
"jack"
127.0.0.1:6379> del student


127.0.0.1:6379> set room 103
127.0.0.1:6379> incr room   # increase by 1
(integer) 104
127.0.0.1:6379> incrby room -1  # or decr
(integer) 103
127.0.0.1:6379> expire room 15  # expire after 15 seconds
127.0.0.1:6379> ttl room
-1 # never expire
-2 # expired


127.0.0.1:6379> setnx kk 12     # add if not exists
127.0.0.1:6379> setex cc 21 value     # add with expire time


127.0.0.1:6379> hset data:user:1 name lucky # hset key field value
127.0.0.1:6379> hset data:user:1 age 21
127.0.0.1:6379> hget data:user:1 name
"lucky"
127.0.0.1:6379> hmset data:user:2 name jack age 32 sex man
127.0.0.1:6379> hmget data:user:2 name age sex
1) "jack"
2) "32"
3) "man"
127.0.0.1:6379> hincrby data:user:2 age 2
(integer) 34


127.0.0.1:6379> lpush user 1 2 3 # left push [3, 2, 1]
127.0.0.1:6379> rpush user 4 5 6 # [3, 2, 1, 4, 5, 6]
127.0.0.1:6379> lpop user 1 # [2, 1, 4, 5, 6]
1) "3"
127.0.0.1:6379> rpop user 1 # [2, 1, 4, 5]
1) "6"
127.0.0.1:6379> lrange user 1 2
1) "1"
2) "4"
127.0.0.1:6379> blpop userx 10 # block if not exists, until 10 seconds


127.0.0.1:6379> sadd set a b c
(integer) 3
127.0.0.1:6379> smember set
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> srem set a
(integer) 1
127.0.0.1:6379> sismember set a
(integer) 0
127.0.0.1:6379> sismember set b
(integer) 1
127.0.0.1:6379> scard set # num of elements
(integer) 2
127.0.0.1:6379> sinter set1 set2 # intersect
127.0.0.1:6379> sdeff set1 set2 # diff set
127.0.0.1:6379> sunion set1 set2 # union set


127.0.0.1:6379> zadd sortedset 100 a 99 b 98 c
(integer) 3
127.0.0.1:6379> zscore sortedset a
(integer) 100
127.0.0.1:6379> zrevrank sortedset a    # dec order
(integer) 0
127.0.0.1:6379> zrank sortedset a   # inc order
(integer) 2
127.0.0.1:6379> zcard sortedset
(integer) 3
127.0.0.1:6379> zcount sorted 99 100
(integer) 2
127.0.0.1:6379> zincrby sortedset 3 c
(integer) 101
127.0.0.1:6379> zrevrange sortedset 0 1
1) "c"
2) "a"
127.0.0.1:6379> zrangescore 100 101
1) "c"
2) "a"
127.0.0.1:6379> zrem sortedset a

3. Jedis

Homepage: Jedis

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.7.0</version>
</dependency>
private Jedis jedis;
@BeforeEach
void setUp(){
    jedis = new Jedis("192.168.xxx.xxx", 6379);
    jedis.auth("123456");
    jedis.select(0);
}

@Test
void testString(){
    String result = jedis.set("name", "jack");
}

@AfterEach
void tearDown(){
    if (jedis!=null){
        jedis.close();
    }
}