레디 스 고급 (A) : 트랜잭션, 만료 시간, 종류

1. 트랜잭션

1.1 개요
트랜잭션의 레디 스 명령의 집합입니다. 트랜잭션 중 하나를 모두 실행되거나 모두 실행되지 않습니다. 거래의 원리는 레디 스에 거래 명령의 첫 번째 부분이며, 다음 차례하자 레디 스의 명령을 실행

# 告诉redis,后面输入的命令先不要执行,把它们暂时存起来
127.0.0.1:6379> multi
OK
# 输入的命令存入事务队列中,返回queued表示已存入事务队列中
127.0.0.1:6379> sadd user:1:following 2
QUEUED
127.0.0.1:6379> sadd user:2:followers 1
QUEUED
# 告诉redis将等待执行的事务队列中的所有命令按照发送顺序依次执行,返回值就是这些命令的返回值组成
127.0.0.1:6379> exec
1) (integer) 1
2) (integer) 1

레디 스 클라이언트를 전송하기 전에 exec 명령은 빈 트랜잭션 큐를 연결하는 경우 트랜잭션이 중 실행되지 않았거나이 실행되는 모든 명령, 레디 스 레디 스 거래는 순서대로 명령이없이 트랜잭션을 수행 할 수 있도록 것이라는 점을 보장하기 위해 다른 명령이 삽입됩니다.

1.2 에러 처리
(1) 구문 오류 : 커맨드의 명령 파라미터의 수는 존재하지 않는하지 않거나

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name jack
QUEUED
127.0.0.1:6379> set age
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379> ersf age
(error) ERR unknown command 'ersf'
# 只要有一个命令语法错误,执行exec会直接返回错误,正确的语法也不会执行
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.

(2) 런타임 에러 : 에러는 명령 실행 중에 발생한

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set ass 1
QUEUED
# 使用散列类型的命令操作集合类型的键,执行之前无法发现错误
127.0.0.1:6379> sadd ass 2
QUEUED
127.0.0.1:6379> set ass 3
QUEUED
# 如果事务里的一条命令出现运行错误,其他的命令依然会执行
127.0.0.1:6379> exec
1) OK
2) (error) WRONGTYPE Operation against a key holding the wrong kind of value
3) OK
127.0.0.1:6379> get ass
"3"

명령 1.3 시계
시계 명령은 트랜잭션이 실행되지 않습니다 후, 키를 수정 (또는 삭제) 된 중 하나는 한 번에 하나 이상의 키를 모니터링하고, exec 명령 완료를 모니터링을 계속 할 수 있습니다.

127.0.0.1:6379> set aaaa 1
OK
127.0.0.1:6379> watch aaaa
OK
127.0.0.1:6379> set aaaa 2
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set aaaa 3
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get aaaa
"2"
127.0.0.1:6379> set aaaa 4
OK
127.0.0.1:6379> get aaaa
"4"

exec를 명령 다음에 모든 핵심 취소됩니다 모니터링, 우리는 또한 모니터링을 취소 주시 해제 명령을 사용할 수 있습니다.

2. 만료 시간

# 给键设置过期时间
expire key seconds 

127.0.0.1:6379> set expirekey djkfj
OK
# 设置15分钟的过期时间,返回0表示键不存在或者设置失败,1表示成功
127.0.0.1:6379> expire expirekey 900
(integer) 1
# 查看还有多久时间过期
127.0.0.1:6379> ttl expirekey
(integer) 785
# 如果键的过期时间是永久的,返回-1
127.0.0.1:6379> ttl aaaa
(integer) -1
127.0.0.1:6379> expire aaaa 2
(integer) 1
# 如果键的过期时间已到,键被删除,ttl命令会返回-2
127.0.0.1:6379> ttl aaaa
(integer) -2

127.0.0.1:6379> set aaaa 11
OK
127.0.0.1:6379> expire aaaa 300
(integer) 1
# 清除键的过期时间
127.0.0.1:6379> persist aaaa
(integer) 1
127.0.0.1:6379> ttl aaaa
(integer) -1
# 重新设值之后也会清除过期时间
127.0.0.1:6379> expire aaaa 20
(integer) 1
127.0.0.1:6379> set aaaa 4
OK
127.0.0.1:6379> ttl aaaa
(integer) -1
# 重新设置时间后,过期时间会重新设置
127.0.0.1:6379> expire aaaa 20
(integer) 1
127.0.0.1:6379> ttl aaaa
(integer) 12
127.0.0.1:6379> expire aaaa 20
(integer) 1
127.0.0.1:6379> ttl aaaa
(integer) 16

초 가장 작은 단위는보다 정확한 만료 시간이 사용 pexpire, 밀리 초 단위로 시간이 될 수 있습니다 원하는 경우, Pttl 나머지 만료 시간을 확인할 수 있습니다, 1 초, 명령 매개 변수는 정수 여야합니다 만료됩니다.
참고 :이 명령은 키의 만료 시간을 모니터링 한 시계를 사용하는 경우, 키 시간이 만료 자동으로 키가 변경되는 것으로 간주 시계 명령을 삭제되지 않습니다

팁 : 캐시 서버로 레디 스를 사용하는 경우, 때때로, 당신은 합리적인 만료 시간을 설정하는 버튼을 찾을 사실, 우리가 특정 규칙에 레디 스에 따라서는 레디 스에이 방법으로, 불필요한 캐시 키를 제거 할 수 있습니다, 어려운 매우 캐싱 시스템에 사용됩니다.
특정 설정이 제한을 초과하는 레디 스의 기초 maxmemory 정책 매개 변수 지정을 레디 스 때까지 키를 점유의 전략을 제거 할 필요가 없습니다 때 수정 maxmemory 매개 변수 구성 파일, 레디 스는 (바이트) 최대 사용 가능한 메모리의 크기를 제한 메모리가 적은 특정 메모리보다
해서 AllKeys-LRU 규칙 : 더 지정된 메모리보다, 가장 최근에 사용 된 키 데이터베이스를 삭제, 다른 규칙은 P78 페이지를 참조하십시오

3. 정렬

3.1 정렬 순서

127.0.0.1:6379> sadd setDD 1 3 6 2 5 9
(integer) 6
127.0.0.1:6379> sort setDD
1) "1"
2) "2"
3) "3"
4) "5"
5) "6"
6) "9"
127.0.0.1:6379> lpush mtlisht 2 4 1 3 7
(integer) 5
127.0.0.1:6379> sort mtlisht
1) "1"
2) "2"
3) "3"
4) "4"
5) "7"
# 有序集合排序会忽略分数,按值排序
127.0.0.1:6379> zadd myzet 30 1 40 4 10 5 20 2
(integer) 4
127.0.0.1:6379> sort myzet
1) "1"
2) "2"
3) "4"
4) "5"

숫자 외에 배치 될 수도, 또한 사전에 소자에 따른 비 디지털 배치

127.0.0.1:6379> lpush listA a c r d f b
(integer) 6
# 如果没有加alpha,sort命令会尝试将所有元素转换成双精度浮点数来比较,如果无法转换则提示错误
127.0.0.1:6379> sort listA
(error) ERR One or more scores can't be converted into double
127.0.0.1:6379> sort listA alpha
1) "a"
2) "b"
3) "c"
4) "d"
5) "f"
6) "r"

대량 주문 작은에서 기본 정렬 순서는 역순으로 될 수있다, 매개 변수 내림차순

127.0.0.1:6379> sort listA alpha
1) "a"
2) "b"
3) "c"
4) "d"
5) "f"
6) "r"
127.0.0.1:6379> sort listA alpha desc
1) "r"
2) "f"
3) "d"
4) "c"
5) "b"
6) "a"

또한 페이징을 지원 정렬 명령 요소 카운트 리미트 카운트 오프셋 파라미터 후의 전 스킵 오프셋 요소를 나타냄

127.0.0.1:6379> sort listA alpha
1) "a"
2) "b"
3) "c"
4) "d"
5) "f"
6) "r"
127.0.0.1:6379> sort listA alpha limit 1 2
1) "b"
2) "c"
게시 86 개 원래 기사 · 원 찬양 14 ·은 10000 +를 볼

추천

출처blog.csdn.net/weixin_43365369/article/details/104249221