>데이터 베이스 >Redis >레디스를 사용하는 방법

레디스를 사용하는 방법

silencement
silencement원래의
2019-06-04 15:49:022436검색

이 글에서는 redis의 기본적인 사용법을 소개하겠습니다. 1. Redis 기본 부분:

레디스를 사용하는 방법

redis 적용 사례1. 최신 N 데이터를 가져오는 작업

2. TOP N 작업 받기 3. 만료 시간을 정확하게 설정해야 하는 애플리케이션

4. 카운터 애플리케이션


5. 특정 세그먼트 시간 전체 데이터 중복 제거 값

6. 실시간 시스템, 스팸 방지 시스템

7. 실시간 메시징 시스템의 Pub/Sub 구축

8. 건설 대기열 시스템

9. 캐시

SET 작업은 초당 110000회, GET 작업은 81000회입니다. 둘째, 서버 구성은 다음과 같습니다:# 🎜🎜#

Linux 2.6, Xeon X3320 2.5Ghz.


stackoverflow 웹사이트는 Redis를 캐시 서버로 사용합니다.


데이터는 하드 디스크에도 기록됩니다. 그래야 데이터가 안전합니다(갑자기 정전이 되는 경우를 제외하면 서비스 재시작은 dump.rdb 파일에 기록됩니다)


1) 설치:

# 🎜🎜 #

tar zxvf redis-2.6.9.tar.gz
cd redis-2.6.9
make
cd src && make install

2) 구성 파일 위치 이동(관리 용이성)


cd /usr/local/
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
mv /lamp/redis-2.6.9/redis.conf /usr/local/redis/etc
cd /lamp/redis-2.6.9/src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

3) 구성 파일을 수정합니다.

vi /usr/local/redis/etc/redis.conf

daemonize에서 no를 yes로 변경합니다. [yes는 백그라운드에서 실행되는 것을 나타냅니다.]#🎜🎜 #4) 시작/임의 시작 :

cd /usr/local/redis/bin
./redis-server /usr/local/redis/etc/redis.conf#启动redis并指定配置文件。
#vi /etc/rc.local #设置随机启动。
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
5) 시작 성공 여부 확인
ps -ef | grep redis
netstat -tunpl | grep 6379#查看端口是否占用。

6) 클라이언트/종료

#🎜 🎜#

cd /usr/local/redis/bin
./redis-cli#进入
quit#退出

7) Redis 닫기

pkill redis-server#关闭
./redis-cli shutdown#关闭

Redis 보안#🎜🎜 #

Redis 보안???(다음 4가지 방법으로)

1.
2. redis.conf 구성 파일에 다음 구성 줄을 추가하여 redis를 단일 인터페이스에 바인딩합니다(그러나 이 네트워크 카드의 데이터만 허용하는 것은 아닙니다).

bind 127.0.0.1

3. Redis에 더 긴 비밀번호를 추가하세요(기억할 필요 없음)

#🎜🎜 #
4. redis.conf 구성에서 인증 기능을 활성화합니다.


5.SSL 프록시


6.


Redis 구성



daemonize 백그라운드에서 실행해야 하는 경우 다음을 변경하세요. 항목을 yes로 설정


pidfile /var/run/redis.pid에서 기본적으로 여러 개의 pid 주소를 구성합니다


bind IP 바인딩, 설정 후에만 이 IP

port 수신 포트에서 요청을 수락합니다. 기본값은 6379입니다

timeout 클라이언트 연결 시간 제한을 초 단위로 설정합니다. #🎜🎜 #

loglevel은 디버그, 상세, 알림, 경고의 4가지 레벨로 구분됩니다

logfile 로그 파일 주소 구성

#🎜 🎜#databases 데이터베이스 수를 설정합니다. 기본 데이터베이스는 0


save redis에 의한 데이터베이스 미러링 빈도 설정


rdbcompression 여부 이미지 백업시 압축#


Dbfilename 이미지 백업 파일명


Dir 데이터베이스 이미지 백업 파일 위치 경로#🎜 🎜#

Slaveof 데이터베이스를 다른 데이터베이스의 슬레이브 데이터베이스로 설정

Masterauth 마스터 데이터베이스 연결에 필요한 비밀번호 확인

# 🎜🎜 #Requirepass 로그인에 필요한 비밀번호 설정


Maxclients 동시에 연결된 클라이언트 수 제한


Maxmemory 최대 메모리 설정 해당 redis는 사용할 수 있습니다#🎜 🎜#


Appendonly 추가 전용 모드 켜기


아래에서 이에 대해 알아볼 수 있습니다.

# 🎜🎜#
#🎜 🎜#Appendfsync addonly.aof 파일 동기화 빈도 설정


vm-enabled 가상 메모리 지원 활성화 여부


vm-swap-file 설정 가상 메모리의 스왑 파일 경로


vm-max-memory redis에서 사용하는 최대 물리적 메모리 크기 설정


vm-page-size 가상 메모리 페이지 크기 설정

vm-pages 스왑 파일의 총 페이지 수 설정

vm-max-threads 수 설정 동시에 VM IO에서 사용하는 스레드 수
#🎜 🎜#Glueoutputbuf 작은 출력 버퍼를 함께 저장


hash-max-zipmap-entries 해시 임계값 설정

#🎜🎜 #Activerehashing Rehash


5개 데이터 유형: 문자열, 해시, 연결 목록, 집합, 순서 집합.

지원: 푸시/팝, 추가/제거, 교차점, 결합, 차이 및 정렬.

redis7e5f35727797d4e1f6113e7a49cd2acamysql


데이터는 하드 디스크에도 기록됩니다. 그래서 데이터는 안전합니다. (갑작스러운 정전을 제외하면 서비스를 다시 시작하면 dump.rdb 파일에 기록됩니다.)

select num#라이브러리를 선택하세요. 기본값은 0 라이브러리, 총 16개입니다. library

auth liweijie#인증된 사용자에게 필요한 비밀번호(비밀번호는 redis.conf에 구성된 비밀번호입니다)

flushdb#데이터베이스를 삭제합니다.

String(문자열) 유형:

set name lijie#키 이름 값을 lijie로 설정

get name#name 값 가져오기 .

keys *#모든 키를 쿼리합니다.

setnx name liweijie#키가 이미 존재하는 경우 0을 반환하고 덮어쓰기를 방지하기 위해 업데이트하지 않습니다.

setex haircolor 10 red #설정된 키의 값은 10초간 유효합니다.

setrange email 6 lampbre.com#교체 키의 값은 6번째 문자부터 lampbre.com으로 변경됩니다

mset name1 Li Dawei name2 Li Xiaowei#Set the 여러 키의 값.

msetnxname1 Zhang San name3 Li Si# 키가 있는지 확인하고, 존재하지 않으면 설정하고, 설정되지 않으면 0을 반환합니다.

mget name1 name2 name3#한 번에 여러 키의 값을 가져옵니다.

getset name1 Tom#키 값을 재설정하고 이전 키 값을 반환합니다.

getrange email 6 18#6번째에서 18번째 사이의 문자에서 이메일 키 값을 가로채세요.

incr uid#매회 1씩 증가(키에 uid가 없으면 설정하고 0부터 시작, 아래와 동일)

incrby uid 5#매회 5씩 증가

incrby uid -5# 5회마다 감소

decr uid #매회 1씩 감소

decrby uid 5#매회 5씩 감소

appendname1 @126.com#name1@126.com 값에 문자열 추가

strlenname1#Return 키 name1의 값 값의 길이입니다.

해시(해시) 유형:

hset user:001 name liweijie#Hash는 사용자 user:001의 name 키 값을 liweijie

hset user:001 age 21#마찬가지로 age 키 값 21을 추가합니다.

hsetnx user:001 age 22# 위와 동일하지만 키가 존재하는지 감지합니다. 존재하지 않는 경우 작성하십시오.

hmset 사용자:002 이름 liweijie2 나이 26 성별 1#여러 키의 값을 동시에 설정합니다.

hget user:001 name#Hash는 사용자 user:001의 이름 키 값을 가져옵니다.

hget user:001 age #위와 동일합니다.

hmget user:001 이름 나이 성별#지정된 여러 키의 값을 가져옵니다.

hgetall 사용자:001#모든 키의 값을 가져옵니다.

hincrbyuser:001 age -8#지정된 키에 주어진 값을 추가합니다.

hexists user:001 sex#지정된 키 값이 존재하는지 확인하세요.

hlen user:001#지정된 해시의 키/필드 수를 반환합니다.

hdel user:001 sex#지정된(user:001) 해시의 지정된 필드 또는 키 값을 삭제합니다.

hkeys user:003#해시에서 모든 필드 또는 키 값을 반환합니다.

목록(연결된 목록) 유형 및 작업(스택 또는 대기열):

lpush mylist "world"#헤드에서 문자열 삽입

lpush mylist "hello"#위와 동일

lrange mylist 0 -1# 0부터 [1) "hello" 2) "world"]

rpush mylist "jiejie"와 같은 마지막 것까지 가져옵니다. #Insert

linsert를 mylist 앞에 "hello" 앞에 "this is linsert" #Specify 삽입 위치(이전에 삽입된 hello).

lset mylist 0 "what"#지정된 첨자의 값을 설정하고 수정합니다.

lrem mylist 1 "hello"#Delete (1) 값이 hello인 요소. (n<0은 꼬리에서 삭제되고, n=0은 완전히 삭제됩니다.)

ltrim mylist 1 2 # 테이블에서 첨자 1/2가 있는 요소를 유지합니다.

lpop mylist# 시작 요소를 팝하고 돌아옵니다.

rpop mylist# 꼬리 요소를 팝하고 돌아옵니다.

rpoplpush mylist mylist2 #mylist 끝에서 Pop하여 mylist2의 헤드에 삽입합니다.

lindex mylist 0#테이블 인덱스가 0인 요소 값을 가져옵니다.

llen mylist#테이블 요소 수를 반환합니다(count($arr )와 동일).

sets(세트) 종류 및 동작(친구 추천, 블로그, 태그 기능) :

smembers myset#myset 세트의 모든 요소 값을 봅니다.

sadd myset "hello" # mysets 컬렉션에 hello 값 추가

srem myset "hello" #myset 컬렉션에서 hello라는 요소를 삭제합니다.

spop myset #mysets의 요소를 무작위로 팝업하고 반환합니다.

sdiff myset2 myset3#myset2와 myset3의 차이를 반환합니다(myset2에 따라 다름).

sdiffstore myset4 myset2 myset3#myset2와 myset3의 차이를 반환하고 myset4에 저장합니다.

sinter myset2 myset3#myset2와 myset3의 교집합을 반환합니다.

sinterstore myset5 myset2 myset3#myset2와 myset3의 교집합을 반환하여 myset5에 저장합니다.

sunion myset2 myset3# 공용체 찾기(중복 제거)

sunionstore myset6 myset2 myset3# 공용체를 찾아 myset6에 저장합니다.

smove myset2 myset3 "3" #myset2의 3개를 myset3으로 이동합니다.

scard myset2#요소 수를 반환합니다.

sismember myset2 "one"# 요소 1이 myset2 세트에 있는지 확인합니다(is_array()와 동일).

srandmember myset2# myset2 세트의 요소를 무작위로 반환하지만 삭제하지는 않습니다(array_rand()와 동일).

sorted set(ordered set) 유형 및 연산(점수 기준으로 정렬):

zadd myzset 1 "one"#요소 1을 시퀀스 1에 추가

zadd myzset 2 "two"#위와 동일합니다.

zadd myzset 3 "two"#업데이트 순서가 2

인 값과 동일합니다.zrange myzset 0 -1 withscores#정렬을 사용하여 모든 요소를 ​​봅니다(기본 오름차순).

zrem myzset "two"#두 개 삭제

zincrby myzset 2 "two"#2의 순서 값에 2를 추가

zrank myzset "two"#집합에 있는 요소의 인덱스 첨자 값을 반환합니다.

zrevrank myzset two#요소를 반전시키고 새 첨자 값을 반환합니다.

zrevrange myzset 0 -1 withscores#Reverse in order (내림차순 정렬과 동일)

zrangebyscore myzset 1 10 withscores#요소를 1-10 순서로 반환합니다(페이지 매김 가능).

zcount myzset 1 10 #1~10 사이의 순서로 요소 수를 반환합니다.

zcard myzset#세트에 있는 모든 요소의 수를 반환합니다.

zremrangebyrank myzset 1 2#세트에서 첨자 1~2가 있는 요소를 삭제합니다.

zremrangebyscore myzset 1 10#세트에서 1부터 10까지의 요소를 삭제합니다.

일반적인 Redis 명령

키/값 관련 명령.

keys * #모든

키 쿼리 user*#지정된

exists user:001#을 쿼리하여 존재 여부를 확인합니다.

del name#지정된 키를 삭제합니다.

expire addr 10#设置过期时间

ttl addr#查询过期时间

select 0 #选择数据库

move age 1#将age移到1数据库。

get age #获取

persist age#移除age的过期时间。

randomkey#随机返回一个key

rename name1 name2#重命名键

type myset#返回键的类型。

ping #测试redis连接是否存活。

echo lamp#输出一个lamp

select 10#选择数据库。

quit/exit/crtl+C#退出客户端

dbsize#返回库里的键的个数。

服务器相关命令:

info#显示redis服务器的相关信息。

config get */loglevel #返回所有/指定的配置信息。

flushdb#删除当前库中的所有键/表。

flushall#删除所有数据库中的所有键/表

二、Redis高级部分: 

1、Redis安全性:  

1.用ACL控制器安全性。

2.给redis加上较长密码 

# requirepass foobared 

requirepass beijing 

3.在redis.conf配置启用认证功能。

方式一:Auth beijing

方式二:./redis-cli -a beijing

4.在redis.conf配置文件增加下面这一行配置,即可把redis绑定在单个接口上(但并不是只有接受这个网卡的数据)。

bind 127.0.0.1(单台机器的时候可以配置,分布式或主从复制时最好不要配置)

5.SSL代理

6.禁用指定命令。

2、Redis主从复制:  

redis只需在从服务器(slave)上配置即可:

slaveof 211.122.11.11 6379 #指定master 的ip 和端口 

masterauth beijing#这是master主机的密码 

Info#查看主/从服务器的状态。

3、Redis事务处理:  

Redis事务很不完善。

4、Redis持久化机制:  

方式一、备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式]

记录操作命令[ Append-only file(缩写aof)的方式]

备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式] 

save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000

方式二、记录操作命令[ Append-only file(缩写aof)的方式](较安全持久化) 

appendonly yes #启用aof 持久化方式 
# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化 
appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中

위 내용은 레디스를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.