redis는 키-값 저장 형식입니다. Nosql 데이터베이스는 널리 사용되는 마스터-슬레이브 복제, 트랜잭션 처리, 낙관적 잠금, 복잡한 트랜잭션 제어, 지속성, 메시지 게시 및 구독 및 기타 기능을 지원합니다.
Redis의 데이터 유형은 관계형 데이터베이스보다 간단하며 크게 문자열, 해시, 목록, 집합, 정렬 집합의 5가지 유형으로 나뉩니다.
1. 문자열 유형은 jps 이미지 또는 직렬화된 쌍을 저장할 수 있는 안전한 바이너리 데이터 유형입니다. 일반적으로 사용되는 redis 데이터베이스 명령은 다음과 같습니다. 🎜>
<span style="font-family:KaiTi_GB2312;"> </span> <span style="font-family:SimSun;">a. Set name lijie ----设置name=lijie b. Setnx 设置如果name存在,则返回0,设置不成功(nx--not exit) c. Setex 指定有效期:set haircolor 10 red --10秒失效 d. Setrange name 6 gmail.com ----从第6个开始设置 e. Mset key1 lijie1 key2 lijei2 key3 lijie3 --设置多个键值对 f. get --获得字符 g. Getrange eamil 0 5 从下标为0到5的值 h. Mget--批量返回 i. Incr key6 --自增 j. Incrby key5 6--以6来进行自增 k. Decr/decrby l. Append key1 .net 在key1后面增加.net m. Strlen--返回长度</span><span style="font-family:KaiTi_GB2312;"> </span>
2. 해시 유형은 메모리를 덜 차지하며 일반적으로 사용되는 명령은 다음과 같습니다.
<span style="font-family:SimSun;">a. Hset--hset user:001 name lijie b. Hsetnx--hsetnx user:002 name lamp c. Hmset---hmset user:003 name lijie age 20 sex 1 d. Hincrby--自增 e. Hexists--判断是否存在 hexits user:002 name f. Hlen----返回所有键数量 g. Hdel--hdel user:003 age h. Hkeys --hkeys user:001 i. Hvals---hvals user:003 j. Hgetall---获取所有fileds和value</span>
3. 목록 데이터 유형은 연결 목록 구조와 대기열의 두 가지 데이터 구조로 나뉩니다. 일반적인 명령:
<span style="font-family:SimSun;">a. Lpush--从头部压入元素:lpush list1 "hello"--栈 b. Lrang myliist 0 -1 从头部一直去不到尾部 c. Rpush---rpush list2 "hello"---队列 d. Linsert---linsert list2 before hello word e. Lset--指定下标赋值:lset list2 1 my f. Lrem--从list 中删除n个和value相同的值 g. Ipop从头弹出元素 h. Rpop 从尾部 i. Rpoplpush j. Lindex---lindex list2 2 k. Llen---返回长度</span>
4. 세트 유형은 합집합, 교차, 교차 세트 및 기타 작업을 지원합니다.
<span style="font-family:SimSun;">a. Sadd--sadd myset1 one b. Smembers--查看 c. Srem --srem myset2 "one" d. Spop--随机弹出 e. Sdiff--两个集合的差集 f. Sdiffstor---叉集存储到指定sets里面:sdiffstore myset4 myset2 myset3 g. Siner--返回交集/sinnerstore h. Sunion--并集/ i. Smove---将第一个set中元素剪切到第二个set中 smove myset1 myset8 three j. Scard --查看个数 k. Sismemeber---测试元素是不是set中元素 l. Srandmember--随机返回元素不会删除</span>
5. 정렬 집합은 순서 집합입니다.
아아앙
【java 애플리케이션】
Java에서 Redis를 적용하려면 jar 패키지를 도입해야 합니다: import redis.clients.jedis.Jedis; 코드에서 직접 사용: Jedis client=new Jedis( "ip 주소",6379);, 연결 풀을 사용할 때 연결 풀 클래스를 생성합니다:
<span style="font-family:SimSun;">a. Zadd---zadd myzset “one” b. 取值:zrange myzet 0 -1 withscores(显示顺序) c. Zrem--zrem myzset two d. Zincrby--zincrby sset1 2 one--对顺序号进行增加 e. Zrank--返回 索引:zrank myset3 two f. Zrevrank g. Zrerange--降序排序 h. Zrangebyscore--按照范围返回:zrangebyscore sset2 2 4 with scores i. Zcount--返回数量 zcount seet2 2 4 j. Zcard --返回 k. Zremrangebyrank--按照索引删除 l. Zremrangebyscore--按照顺序删除</span>
파이프라인 기술 응용
redis는 지속적으로 쓰기 작업을 실행할 때 데이터베이스가 실행되는 횟수를 줄이기 위해 열고 닫고 파이프라인을 생성하면 성능이 향상될 수 있습니다. 활용:
package com.tgb.itoo.exam.students.controller; import java.util.ResourceBundle; import org.springframework.util.Assert; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisPoolTest { private static JedisPool jedisPool; private static JedisPoolConfig initPoolConfig(){ JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 控制一个pool最多有多少个可用的的jedis实例 // jedisPoolConfig.setMaxActive(1000); // 最大能够保持空闲状态的对象数 jedisPoolConfig.setMaxIdle(300); // 超时时间 jedisPoolConfig.setMaxWaitMillis(1000); // 在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的; jedisPoolConfig.setTestOnBorrow(true); // 在还会给pool时,是否提前进行validate操作 jedisPoolConfig.setTestOnReturn(true); return jedisPoolConfig; } /** * 初始化jedis连接池 * <br>------------------------------<br> */ public static void before() { JedisPoolConfig jedisPoolConfig = initPoolConfig(); // 属性文件读取参数信息 ResourceBundle bundle = ResourceBundle.getBundle("redis_config"); String host = bundle.getString("redis.host"); int port = Integer.valueOf(bundle.getString("redis.port")); int timeout = Integer.valueOf(bundle.getString("redis.timeout")); String password = bundle.getString("redis.password"); // 构造连接池 jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password); } public void testSet() { Jedis jedis = null; // 从池中获取一个jedis实例 try { jedis = jedisPool.getResource(); jedis.set("blog_pool", "java2000_wl"); } catch (Exception e) { // 销毁对象 jedisPool.returnBrokenResource(jedis); // Assert.fail(e.getMessage()); } finally { // 还会到连接池 jedisPool.returnResource(jedis); } } }