安装:官网有详细的说明,主要是下载包,解压,进入redis目录,make编译一下,官网有详细的安装说明。
多数据库:默认支持16个库,通过select 1 来进行库的选择
启动服务器: redis-server || redis-server --port 50001 || redis-server ../redis.conf
启动控制台:redis-cli || redis-cli -h 127.0.0.1 -p 6379
运行lua脚本文件:redis-cli --eval /***/***/***.lua [KEYS-1], [ARGV-1] //一定注意,后面有个空格
性能测试工具:redis-benchmark
AOF文件修复工具:redis-check-aof
RDB文件检查工具:redis-check-dump
强制终止Redis进程可能会导致数据丢失(把内存数据同步到硬盘的过程中)
redis-cli SHUTDOWN 来进行关闭 (1.断开客户连接 2.进行持久化 3.退出)---> kill Redis进程PID 同效果
测试客户端是否连接正常:redis-cli PING ---> 正常返回 PONG
---------------------- 通用命令 --------------------------------------
FLUSHDB 清除一个数据库,FLUSHALL清除整个redis数据。
EVAL 运行一条lua脚本
keys *_null || keys aaa* 对于key的模糊查询
----------------------命令返回值类型 5 种--------------------------
1、状态返回
2、错误回复 (error)开头
3、整数回复 (integer)开头
4、字符串回复 ""包裹
5、多行字符串回复
----------------------redis支持的数据类型 5 种--------------------
1、string 字符型
2、hash 散列
3、list 列表
4、set 集合
5、zset 有序集合
通用
keys * //查询所有的key
type [key] //查询key的类型
incr [key] //自增长,每次增长1
incrby [key] [value] //自增长,每次增长value
incrbyfloat [key] [value] //双精度浮点自增长,每次增长value
decr [key] //自减少,每次减少1
decrby [key] [value] //自减少,每次减少value
字符型String操作:
set [key] [value] //放数据------------
mset [key1] [value1] [key2] [value2] //批量放数据
get [key] //获取数据
mget [key1] [key2] //批量获取数据
del [key] [value] //删除数据
append [key] [value] //尾部追加value,如果不存在相当于set
strlen [key] //获取字符串长度
浮点类float型操作
incrbyfloat [key] [value] //放数据
散列类型操作 (不支持类型嵌套,只能是字符串)
hset [key] [field] [value] //放数据
hmset [key] [field1] [value1] [field2] [value2] //放入多条
hget [key] [field] //取数据
hmget [key] [field1] [field2] //取出多条
hgetall [key] //读出key的所有的值
hexists [key] [field] //判断是否存在,存在返回1,不存在返回0
hsetnx [key] [field] [value] //不存在时,赋值
hincrby [key] [field] [value] //增加指定的value的整数
hdel [key] [field1] [field2] //删除一个或者多个字段
hkeys [key] //获取key中所有的字段名
hvals [key] //获取key中所有的字段值
列表类型操作:(双向链表)
lpush [key] [value1] [value2] //向列表左边增加元素
rpush [key] [value1] [value2] //向列表右边增加元素
lpop [key] //从列表左边弹出一个元素
rpop [key] //从列表右边弹出一个元素
llen [key] //得到列表的长度
lrange [key] [start] [stop] //得到列表的片段,start到stop,从0开始,不像pop读出就删除
//1.支持负数 2.如果start小于stop返回null 3.stop大于实际范围,返回全部不报错
lrem [key] [count] [value] //从右边开始删除前count个值为value的元素
lindex [key] [index] //返回key中指定索引index的value
lset [key] [index] [value] //通过key的索引index对这个位置的赋值为value
ltrim [key] [start] [end] //删除指定索引start到end范围以外的所有元素
linsert [key] before|after [pivot] [value] //插入操作,在列表中查找值为pivot的元素,
//将value插在before擦在pivaot元素之前after为之后
rpoplpush [list1] [list2] //把元素从一个列表转移到另一个列表
集合类型 (不可重复)
sadd [key] [member] [member1] [member2] //增加一个或多个元素,遇到重复的值,会被忽略掉
srem [key] [member] [member1] [member2] //删除一个或多个元素,遇到没有的值,会被忽略掉
smembers [key] //返回集合中所有的元素
sismember [key] [member] //判断元素是否在集合中
sdiff [key] [key1] ... //key - key1 计算key和key1的差集
sinter [key] [key1]... //计算key和key1的交集
sunion [key] [key1]... //key和key1的并集
scard [key] //获得集合中元素的个数
sdiffstore [destination] [key] [key1] ... //计算key和key1的差集将结果放到destination键中
sinterstore [destination] [key] [key1] ... //计算key和key1的交集将结果放到destination键中
sunionstore [destination] [key] [key1] ... //计算key和key1的并集将结果放到destination键中
srandmember [key] [count] //随机从集合中取得一个元素
spop [key] //从集合中弹出一个元素 (随机弹出)
有序集合
zadd [key] [score] [member] [score1] [member1] //增加元素,score分数用于排序
zscore [key] [member] //获得元素的分数
zrange [key] [start] [end] (withscores) //获取排名在某个范围的列表,从小到大,withscores可选表示是否显示分数
zrevrange [key] [start] [end] (withscores) //获取排名在某个范围的列表,从大到小
zrangebyscore [key] [mix] [max] (withscores) [limit offset count] //返回分数在mix到max之间的元素,按分数从小到大排序
// ...... [mix] ( [max] '('表示包含mix不包含max
// ...... [mix] +inf/-inf +inf/-inf表示正无穷/负无穷
// ...... [mix] [max] limit [n1] [n2] limit 表示取mix到max的头n1到n2个人的元素
zincrby [key] [increment] [member] //给member元素的分值加上increment,如果increment为负数,为减分
zcard [key] //获得集合中元素的数量
zcount [key] [min] [max] //获得集合中分数为min到max的元素个数
zrem [key] [member1] [member2] //删除一个或者多个元素
zremrangebyrank [key] [start] [stop] //按照排名删除start到stop的元素
zremrangebyscore [key] [min] [max] //删除分数为min到max之间的元素
zrank [key] [member] //获得元素的排名 在从小到大排序中
zrevrank [key] [member] //获得元素的排名 在从大到小排序中
zinterstore [destination] [numkeys] [key1] [key2] {weights [weight....]} {aggregate sum|min|max}
//计算多个集合的交集并把结果存到destination中
//1、aggregate为sum时(默认值)为所有参与计算的集合元素的交集的元素的,并且把他们的分值相加
//例 :ZADD user1 1 zhou 2 wang 3 aaa ; ZADD user2 3 zhou 8 wang 4 bbb
// ZINTERSTORE userall 2 user1 user2 得到交集zhou,wang,分值为4,10,放入userall中 userall也是一个有序集合
//2、aggregate为min时,为所有参与计算的集合元素的交集,分值按元素分,取最小的那个分值
//例:ZINTERSTORE userall 2 user1 user2 AGGREGATE MIN 得到交集zhou, wang 分值 1,2
//3、aggregate为max时,为所有参与计算的集合元素的交集,分值按元素分,取最大的那个分值
//4、weights参数能设置每个集合的权重,参与计算的元素的分数会被乘以该集合的权重
//例:ZINTERSTORE userweights 2 user1 user2 WEIGHTS 2 3 得到元素zhou,wang 分值((1*2)+(3*3)) 11 和((3*2)+(8*3)) 30
------------------------------------------------------------------------------------------------------------------------
事务:
multi (开始事务)
...........
exec (提交)
//事务如果是语法错误,全部不会执行,如果是其他错误,执行到哪算哪不会回滚
生存时间
expire [key] [seconds] //让key的对象在seconds秒后过期 单位是秒
pexpire [key] [milliseconds] //让key的对象在milliseconds毫秒后过期 单位是毫秒
ttl [key] //查询key的过期时间 键不存在(到期了)或者没有设置生存时间(永久存在)返回-1
persist [key] //取消生存时间,恢复成永久存在,成功返回1,否或者key本来就是永久的 返回0
//使用 set [key] [value] 或者 gestate [key] [value] 同效果
排序
sort [key] {alpha} {desc} {by [key]} {get [key1]}
//可以对列表类型,集合类型,有序集合类型进行排序,对有序集合的排序会忽略分值,按元素排序
//1. aplpha 参数加上是按字典排序
//2. 默认从小到大排序,加上desc是从大到小
//3. by可以按某字符或者某散列类型中的某字符排序([key]->[field])替换原有的元素进行排序,并且*是必须要有的
//例: sort user by post*->time
//4.返回指定的元素
//例: sort user by post*->time get post*->title
//(还有些不会用,空了补全)