이 글에서는 redis의 기본적인 사용법을 소개하겠습니다. 1. Redis 기본 부분:
redis 적용 사례1. 최신 N 데이터를 가져오는 작업
2. TOP N 작업 받기 3. 만료 시간을 정확하게 설정해야 하는 애플리케이션
5. 특정 세그먼트 시간 전체 데이터 중복 제거 값
6. 실시간 시스템, 스팸 방지 시스템
7. 실시간 메시징 시스템의 Pub/Sub 구축
8. 건설 대기열 시스템
9. 캐시SET 작업은 초당 110000회, GET 작업은 81000회입니다. 둘째, 서버 구성은 다음과 같습니다:# 🎜🎜#
Linux 2.6, Xeon X3320 2.5Ghz.
1) 설치:
tar zxvf redis-2.6.9.tar.gz cd redis-2.6.9 make cd src && make install
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.conf5) 시작 성공 여부 확인
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
#🎜🎜 #
4. redis.conf 구성에서 인증 기능을 활성화합니다.
5.SSL 프록시
6.
daemonize 백그라운드에서 실행해야 하는 경우 다음을 변경하세요. 항목을 yes로 설정
pidfile /var/run/redis.pid에서 기본적으로 여러 개의 pid 주소를 구성합니다
bind IP 바인딩, 설정 후에만 이 IP
port 수신 포트에서 요청을 수락합니다. 기본값은 6379입니다
#🎜 🎜#Glueoutputbuf 작은 출력 버퍼를 함께 저장loglevel은 디버그, 상세, 알림, 경고의 4가지 레벨로 구분됩니다
logfile 로그 파일 주소 구성
#🎜 🎜#databases 데이터베이스 수를 설정합니다. 기본 데이터베이스는 0save 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에서 사용하는 스레드 수
hash-max-zipmap-entries 해시 임계값 설정
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!