Redis小记
Redis使用小记
下载,解压、编译
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
tar xzf redis-4.0.11.tar.gz
cd redis-4.0.11
make
安装
make PREFIX=/usr/local/redis install
因为编译安装在/usr/local/redis下,所以下面操作都是在目录/usr/local/redis/bin下完成
cd /usr/local/redis/bin
配置/etc/redis.conf
bind 192.168.2.188 #支持局域网访问
daemonize yes #后台运行
启动
./redis-server /etc/redis.conf
连接
./redis-cli -h 192.168.2.188
不安装,直接在线体验
点此访问 web Redis https://try.redis.io
常用操作
Redis 有5个基本数据结构:字符串(string)、散列(hash)、列表(list)、集合(set)和有序集合(sorted set)
- string 操作
string 表示的是一个可变的字节数组,我们初始化字符串的内容、可以拿到字符串的长度,可以获取string的子串,可以覆盖string的子串内容,可以追加子串.
- 初始化字符串 提供【变量名称】和【变量内容】
set msg "hello world"
- 查看字符串内容
get msg
- 获取字符串长度 提供【变量名称】
strlen msg
- 获取子串 提供【变量名称】以及开始和结束位置 [start,end]
getrange msg 5 10
- 覆盖子串 提供【变量名称】以及开始位置和目标子串
setrange msg 5 " china"
- 追加子串
append msg ", nihao."
- 批量操作
set name1 zhansan
set name2 lisi
- 批量读
mget name1 name2
- 批量写
mset name1 val1 name2 val2 name3 val3
- 设置过期时间和 set 命令扩展
expire name1 5 #5s 后过期
setex name1 5 val1 #5s 后过期,等价于set + expire
setnx name1 code #如果name1不存在,就执行set创建
- 字符串的寿命
ttl name1 #返回正数表示过期时间,返回-2表示变量不存在,-1表示没有设置过期时间
- 对整数进行加减
自增的范围是signed long的最小,最大值【-9223372036854775808 ~ 9223372036854775807】,超过这个值,redis会报错
set age 30
incr age # 加1
incrby age 5 # 加5
incrby age -5 # 减5
decr age # 减1
decrby age 5 # 减5
- 主动删除
del msg
- 使用php API 操作 https://github.com/phpredis/phpredis
$redis = new Redis();
$redis->connect('192.168.2.188','6379',1);
$redis->set('msg','hello world');
$redis->get('msg');
$redis->delete('msg');
2.LIST 列表常用操作
Redis 的列表结构常用来做异步队列使用。将需要延后处理的任务结构体序列化成字符串塞进 Redis 的列表,另一个线程从这个列表中轮询数据进行处理。
- 头元素和尾元素
头元素指的是列表左端/前端第一个元素,尾元素指的是列表右端/后端第一个元素。
- 空列表
指不包含任何元素的列表,Redis将不存在的key也视为空列表。
- 右边进左边出:队列 (先进先出)
rpush books python java php golang # 添加元素
llen books # 队列元素长度
lpop books # 最先加入的python出来
lpop books
lpop books
lpop books
- 右边进右边出:栈 (先进后出)
rpush books python php js css java golang # 添加元素
rpop books # 最后添加的golang出来
- 使用php API 操作
$redis->delete('language');
$redis->lPush('language','java');
$redis->lPush('language','php');
$redis->lPush('language','linux');
- RPUSH 将一个或多个值 value 插入到列表 key 的表尾(最右边)。
rpush language iOS #成功后返回list长度
- 使用php API 操作
$redis->rPush('language','iOS');
- RPUSHX
RPUSHX key value
当key存在并且是一个列表时,将值value插入到列表key的表尾。
rpushx language ruby
- 使用php API 操作
$redis->rPushX('language','ruby');
- LRANGE
LRANGE key start stop 返回列表key中指定区间内的元素,区间以偏移量start和stop指定。
0 表示第一个元素,1表示第二个元素,-1表示最后一个元素,-2表示倒数第二个元素,依此类推
LRANGE language 0 -1 返回所有
- 使用php API 操作
$arr = $redis->lRange('language', 0, -1); # 若有值,返回数组
- LINDEX
LINDEX key index 返回列表key中,下标为index的元素,0表示第一个,1表示第二个,-1表示最后一个,-2表示倒数第二个,依此类推…
如果key不为list,返回错误
lindex language -1
- 使用php API 操作
$s = $redis->lget('language',1); 或 $s = $redis->lindex('language',1);
echo $s;
- LPOP
移除并返回列表 key 的头元素。
lpop language
- 使用php API 操作
$redis->lPop('language');
- RPOP
RPOP key
移除并返回列表key的尾元素
rpop language
- 使用php API 操作
$redis->rPop('language');
- LLEN
LLEN key
返回列表key的长度,如果key不存在,返回0,如果key不是列表类型,返回一个错误。
llen language
- 使用php API 操作
$len = $redis->lSize('language');
或
$len = $redis->lLen('language');
- SADD 无序集合
SADD key member [member …]
将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。
假如key不存在,则创建一个只包含member元素作为成员的集合。当key不是集合类型时,返回一个错误。在Redis2.4版本以前,SADD只接受单个member值。
sadd nosql "Redis" "MongoDB" "Neo4j"
使用smembers查看刚设置的值
smembers nosql
- ZADD 有序集合
将一个或多个member元素及其score值加入到有序集key当中。
如果某个member已经是有序集合的成员,那么更新这个member的score的值,并通过重新插入这个member元素,来保证该member在正确的位置上。
score值可以是整数值或双精度浮点数。
如果key不存在,则创建一个空的有序集并执行ZADD操作。当key存在但不是有序集类型时,返回一个错误。
ZADD page_rank 9 baidu.com 8 bing.com
设置密码
CONFIG SET requirepass password # 密码设置为mypassword
下次再redis-cli -h 192.168.2.188操作时,就会提示
(error) NOAUTH Authentication required.
除非先使用auth mypassword解锁
清空密码:
CONFIG SET requirepass ''
- 原文作者:zhenxing
- 原文链接:https://www.zhenxing.site/redis-comment.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。