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 会立即弹出信息
虚拟内存
将那些不经常访问的数据交换到磁盘上