Chinaunix首页 | 论坛 | 博客
  • 博客访问: 126454
  • 博文数量: 47
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 243
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-18 11:45
文章分类

全部博文(47)

文章存档

2017年(2)

2015年(33)

2014年(12)

分类: Java

2015-03-26 13:33:39

原文地址:redis 命令初学 作者:zbs4ms

安装:官网有详细的说明,主要是下载包,解压,进入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       
       //(还有些不会用,空了补全)       

阅读(659) | 评论(0) | 转发(0) |
0

上一篇:redis 持久化

下一篇:多线程下的单例模式

给主人留下些什么吧!~~