redis 常用命令

keys *   获得所有的键(包括 string,list,zet)
exits mylist  检查是否存在某个键
del  删除某个键
expire myset 10 设置过期10秒
ttl myset  返回剩余过期时间剩余值
persist myset  取消过期时间 
select 0  选择0数据库
set age 10
move age 1 移动到1数据库(redis一个有0-15个数据库)
randomkey  随机返回
rename set1 set2  重命名set1 为set2
tyle list  返回类型(set list zset)
 
//服务器操作
ping 返回PONG 表示服务启动(好无聊的命令)
dbsize 返回库中的key数目
config get dir
flushdb 清空整个数据库
flushall 删除所有库的所有键
//事务处理
set age 10  //设置age=10
multi   //事务开始
set age 30  //返回QUEUED 加入队列
set age 40  //返回QUEUED 加入队列
//discard 取消当前所有事务
exec //执行队列
结果是 age = 40
事务处理的不足:如果队列中得其中一个任务失败,整个事务不会回滚
 
//乐观锁
session 1
set age 10  //设置age=10
watch age  //监视age的版本
multi   //事务开始
set age 30  //返回QUEUED 加入队列
set age 40  //返回QUEUED 加入队列
exec //执行队列
执行成功,但是age仍然是100,因为版本不同了
在队列执行过程中 session2
set age 10  //设置age=100  版本+1
 
持久化机制
目前有2种
1.snapshotting (快照) 直接将redis数据存在文件里 默认文件名 dump.rdb 二进制文件
可以配置 在 n秒内,如果超过m个key修改就自动做快照
save 300 10 //在配置文件中,表示在300秒内如果超过10个key被修改,则发起快照保存
缺点:有时间间隙可能漏掉部分数据
2.Append – only file (aof方式) 将每次增删改操作操作 写到文件中 ,当redis重启时会重新执行文件重建整个数据库  更加安全

 
订阅与发布
session1
subscribe tv1  //订阅tv1
session2
subscribe tv1 tv2  //订阅tv1 和 tv2
session3
publish tv1 hello word
这时候 session1 和 session2 会立即弹出信息
 
虚拟内存
将那些不经常访问的数据交换到磁盘上

发表评论