• Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构: 字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。
• Redis将所有的数据都存放在内存中,所以它的读写性能十分惊人。 同时,Redis还可以将内存中的数据以快照或日志的形式保存到硬盘上,以保证数据的安全性。
• Redis典型的应用场景包括:缓存、排行榜、计数器、社交网络、消息队列等。
Microsoft Windows [版本 10.0.19044.1645] (c) Microsoft Corporation。保留所有权利。 C:UsersM>redis-cli 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> select 0 OK 127.0.0.1:6379> flushdb OK 127.0.0.1:6379> set test:count 1 OK 127.0.0.1:6379> get test:count "1" 127.0.0.1:6379> incr test:count (integer) 2 127.0.0.1:6379> decr test:count (integer) 1 127.0.0.1:6379> hset test:user id 1 (integer) 1 127.0.0.1:6379> hset test:user username zhangsan (integer) 1 127.0.0.1:6379> hget test:user id "1" 127.0.0.1:6379> hget test:user username "zhangsan" 127.0.0.1:6379> lpush test:ids 101 102 103 (integer) 3 127.0.0.1:6379> llen test:lds (integer) 0 127.0.0.1:6379> llen test:ids (integer) 3 127.0.0.1:6379> lindex test:ids 0 "103" 127.0.0.1:6379> lindex test:ids 2 "101" 127.0.0.1:6379> lrange test:ids 0 2 1) "103" 2) "102" 3) "101" 127.0.0.1:6379> rpop test:ids "101" 127.0.0.1:6379> lpop test:ids "103" 127.0.0.1:6379> sadd test:teachers aaa bbb ccc ddd eee (integer) 5 127.0.0.1:6379> scard test:teachers (integer) 5 127.0.0.1:6379> spop test:teachers "eee" 127.0.0.1:6379> scard test:teachers (integer) 4 127.0.0.1:6379> spop test:teachers "ddd" 127.0.0.1:6379> smembers test:teachers 1) "aaa" 2) "ccc" 3) "bbb" 127.0.0.1:6379> zadd test:students 10 aaa 20 bbb 30 ccc 40 ddd 50 eee (integer) 5 127.0.0.1:6379> zcard test:students (integer) 5 127.0.0.1:6379> zscore test:students ccc "30" 127.0.0.1:6379> zrank test:students ccc (integer) 2 127.0.0.1:6379> zrange test:students 0 2 1) "aaa" 2) "bbb" 3) "ccc" 127.0.0.1:6379> keys * 1) "test:count" 2) "test:teachers" 3) "test:students" 4) "test:user" 5) "test:ids" 127.0.0.1:6379> keys test* 1) "test:count" 2) "test:teachers" 3) "test:students" 4) "test:user" 5) "test:ids" 127.0.0.1:6379> type test:user hash 127.0.0.1:6379> exists test:user (integer) 1 127.0.0.1:6379> del test:user (integer) 1 127.0.0.1:6379> exists test:user (integer) 0 127.0.0.1:6379> expire test:student (error) ERR wrong number of arguments for 'expire' command 127.0.0.1:6379> expire test:students 5 (integer) 1 127.0.0.1:6379> keys * 1) "test:count" 2) "test:teachers" 3) "test:students" 4) "test:ids" 127.0.0.1:6379> keys * 1) "test:count" 2) "test:teachers" 3) "test:ids" 127.0.0.1:6379> C:UsersM>
spring整合redis,写好配置类后进行一些简单的测试
package com.nowcoder.community;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.concurrent.TimeUnit;
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class RedisTests {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testStrings() {
String redisKey = "test:count";
redisTemplate.opsForValue().set(redisKey,2);
redisTemplate.opsForValue().set(redisKey, 1);
System.out.println(redisTemplate.opsForValue().get(redisKey));
System.out.println(redisTemplate.opsForValue().increment(redisKey));
System.out.println(redisTemplate.opsForValue().decrement(redisKey));
}
@Test
public void testHashes() {
String redisKey = "test:user";
redisTemplate.opsForHash().put(redisKey, "id", 1);
redisTemplate.opsForHash().put(redisKey, "username", "zhangsan");
System.out.println(redisTemplate.opsForHash().get(redisKey, "id"));
System.out.println(redisTemplate.opsForHash().get(redisKey, "username"));
}
@Test
public void testLists() {
String redisKey = "test:ids";
redisTemplate.opsForList().leftPush(redisKey, 101);
redisTemplate.opsForList().leftPush(redisKey, 102);
redisTemplate.opsForList().leftPush(redisKey, 103);
System.out.println(redisTemplate.opsForList().size(redisKey));
System.out.println(redisTemplate.opsForList().index(redisKey, 0));
System.out.println(redisTemplate.opsForList().range(redisKey, 0, 2));
System.out.println(redisTemplate.opsForList().leftPop(redisKey));
System.out.println(redisTemplate.opsForList().leftPop(redisKey));
System.out.println(redisTemplate.opsForList().leftPop(redisKey));
}
@Test
public void testSets() {
String redisKey = "test:teachers";
redisTemplate.opsForSet().add(redisKey, "刘备", "关羽", "张飞", "赵云", "诸葛亮");
System.out.println(redisTemplate.opsForSet().size(redisKey));
System.out.println(redisTemplate.opsForSet().pop(redisKey));
System.out.println(redisTemplate.opsForSet().members(redisKey));
}
@Test
public void testSortedSets() {
String redisKey = "test:students";
redisTemplate.opsForZSet().add(redisKey, "唐僧", 80);
redisTemplate.opsForZSet().add(redisKey, "悟空", 90);
redisTemplate.opsForZSet().add(redisKey, "八戒", 50);
redisTemplate.opsForZSet().add(redisKey, "沙僧", 70);
redisTemplate.opsForZSet().add(redisKey, "白龙马", 60);
System.out.println(redisTemplate.opsForZSet().zCard(redisKey));
System.out.println(redisTemplate.opsForZSet().score(redisKey, "八戒"));
System.out.println(redisTemplate.opsForZSet().reverseRank(redisKey, "八戒"));
System.out.println(redisTemplate.opsForZSet().reverseRange(redisKey, 0, 2));
}
@Test
public void testKeys() {
redisTemplate.delete("test:user");
System.out.println(redisTemplate.hasKey("test:user"));
redisTemplate.expire("test:students", 10, TimeUnit.SECONDS);
}
}



