redis常用命令及高级特性

11.redis常用命令

keys * 返回所有的键

keys my* 模糊匹配

exists key 确认key是否存在

del key

expire key time对现有的键设置过期时间[秒为单位]

ttl key 查看过期时间,-1代表已过期

move 将当期数据库中的key移到其它数据库当中

select database_name 选择数据库

move key database_name

persist key 取消过期时间,此时ttl key返回-1并不代表过期

randomkey 随机返回一个key

rename 重命名key

rename set2 set20

type key 返回key的类型

ping 测试连接是否正常

echo 在命令行打印一些内容

select database 选择数据库 ,redis数据库编号在0到15之间

quit/exit/ctrl+c退出

dbsize返回当前数据库的数目

info获取服务器的信息与统计

config get key 实时传储收到的请求

config get *

flushdb 删除当前选择数据库中的所有key

flushall 删除所有数据库当中的所有key

12.redis高级应用

12.1安全性

设置密码:

vi /usr/local/redis/etc/redis.conf

requirepass password

重启服务之后进行连接

/usr/local/redis/bin/redis-cli

auth password

或者/usr/local/redis/bin/redis-cli -a password

12.2主从复制

master可以有多个slave

多个slave可以连接到同一个master外,还可以连接到其它的slave

主从复制不会阻塞master,在同步数据的时候,master可以继续处理client请求

提高系统的伸缩性

redis主从复制的过程:

slave与master建立连接,发送sync同步指令

master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存

slave将此文件保存到硬盘上

配置主从服务器:

配置slave服务器很简单,只需要在slave的配置文件中加入以下配置:

slaveof 192.168.1.1 6379#指定master的IP和端口

masterauth password #这是主机的密码

info可以查看主从机器信息

12.3事物处理

redis对事务的支持目前还比较简单,redis只能保证一个Client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令,当一个client在一个连接中发出multi命令时,这个

连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令

multi可以打开事务上下文

exec执行事务当中的命令

discard取消事务

乐观锁:大多数是基于数据版本version的记录机制实现的,即为数据增加一个版本标识

,在基于数据库表的版本解决方案中,一般是通过为数据库表添加一个version字段来实现读取数据时,

将此版本号一同读出,之后更新时,对比版本号加1.此时,将提交数据的版本号与数据表对应记录的当前版本号进行对比

,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为是过期数据

redis乐观锁

get age

watch age

multi

watch命令会监视给定的key,当exec时如果监视的key从调用watch后发生过变化,则整个事务会失败。

也可以调用watch多次监视多个key,这样就可以对指定的key加乐观锁了,注意watch的key是对整个

连接有效的,事务也一样。如果断开连接,监视和事务都会被自动清除,当然了exec,discard,unwatch命令都会

清除连接中的所有监视。

12.4持久化机制

redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化

1.snapshotting(快照)也是默认方式

2.append-only file(缩写aof)的方式

快照是默认的持久化方式。这种方式是将内存中数据以快照的方式写入到二进制文件当中,默认的文件名为

dump.rdb.可以通过配置设置自动做快照持久化的方式,我们可以配置redis在n秒内如果超过m个key被修改

就自动写快照

save 900 1#900秒内如果超过一个key被修改,则发起快照保存

save 300 10#300秒内如超过10个key被修改,则发起快照保存

save 60 10000

由于快照方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改

aof比快照方式有更好的持久性,是由于在使用aof时,redis会将没一个收到的写命令都通过write函数追加到文件中,

当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

当然由于os会在内核中缓存write做的修改,所以可能不是立即写到硬盘上,这样aof方式的持久化也还是有可能会丢失部分修改。

可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机

appendonly yes #启用aof持久化方式

#appendfsync always #收到写命令就立即写入磁盘,最慢,但是保证完全的持久化

appendfsync everysec #每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中

#appedfsync no #完全依赖os,性能最好,持久化没保证

12.5发布订阅消息

发布订阅(pub/sub)是一种消息通信模式,主要的目的是解除消息发布者和消息订阅者之间的耦合,redis作为一个pub/sub

的server,在订阅者和发布者之间起到了消息路由的功能,订阅者可以通过subscribe和

psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将信息类型称为通道

(cahnnel).当发布者通过publish命令向redis server发送特定类型的信息时,订阅该信息类型的全部client都会收到此消息

subscribe tv1 监听

subscribe tv1 tv2

publish tv1 zsjbroadcast 广播

12.6虚拟内存的使用

redis的虚拟内存与操作系统的虚拟内存不是一回事,但是思路和目的都是相同的

就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间

用于其他需要访问的数据,尤其是对于redis这样的内存数据库,内存总是不够用的,除了可以将数据分割到多个redis server外

另外能够提高数据库容量的办法就是使用虚拟内存把那些不经常访问的数据交换到磁盘上

vm-enabled yes#开启vm功能

vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径

vm-max-memory 1000000 #redis使用的最大内存上限

vm-page-size 32 #每个页面的大小32字节

vm-pages 1344217728 #最多使用多少页面

vm-max-threads 4#用于执行value对象换入缓存的工作线程数量

时间: 2024-08-02 02:51:03

redis常用命令及高级特性的相关文章

自学总结redis第二部分(redis常用命令、高级命令特性以及与java代码的结合)

六.redis多数据类型介绍(常用命令) 6.1前提操作 #如果前面的redis环境没搭好,那么可以先暂时在 "http://try.redis.io/"中实践redis命令部分.   #为了测试方便,把redis登录密码暂时撤销   #redis一共分为五种基本数据类型:String,Hash,List,Set,ZSet #所有命令都可以到"http://www.redis.cn/commands.html"  去搜索到. #首先由于redis是一个基于key-v

Redis常用命令与高级应用

附: 127.0.0.1:6379> set xiaofei 小飞 OK 127.0.0.1:6379> get xiaofei "\xe5\xb0\x8f\xe9\xa3\x9e" 127.0.0.1:6379> quit [[email protected] redis-2.8.6]# redisc --raw 127.0.0.1:6379> get xiaofei 小飞 127.0.0.1:6379> 5. sorted sets类型和操作 sort

Redis快速起步及Redis常用命令大全

本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的相关问题,为了更方便的与大家一起探讨与学习,每个章节均提供尽可能详细的示例源码及注释,所有示例源码均可在javacourse-redis-in-action找到相关帮助! 本章目标: 什么是Redis Redis数据结构 Redis常用命令 什么是Redis Redis是一个功能强大的非关系型内存数

Redis常用命令-list-set-zset

Redis常用命令 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等 https://gitee.com/nmwork/RedisUtil 1.   Redis数据类型 1.1.  List类型 1.1.1.   简介 Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每

No-sql之redis常用命令

转自:http://blog.csdn.net/nicewuranran/article/details/51793760 No-SQL之Redis 介绍 Redis是一种基于内存存储的key-value高性能存储系统,类似memcached,但是redis支持丰富的数据结构类型,并且其还支持数据持久化到磁盘. Redis is a data structure server. It is open-source, networked, in-memory, and stores keys wi

Redis 常用命令 大全

Redis 常用命令 发现几个很好的 Redis 常用命令汇总大全网页,分享给小伙伴们~ 1.Redis 命令参考 http://redisdoc.com/string/index.html 2.W3Cschool https://www.w3cschool.cn/redis_all_about/redis_all_about-sfc726u6.html 3.Runoob https://www.runoob.com/redis/redis-commands.html 原文地址:https://

Redis常用命令及知识

1.    redis数据结构 – 简介 redis是一种高级的key:value存储系统,其中value支持五种数据类型: 1.字符串(strings) 2.字符串列表(lists) 3.字符串集合(sets) 4.有序字符串集合(sorted sets) 5.哈希(hashes) 而关于key,有几个点要提醒大家: 1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率: 2.key也不要太短,太短的话,key的可读性会降低: 3.在一个项目中,key最好使用统一

Redis常用命令-string-hash

Redis 1.   Redis命令描述 Redis 命令用于在 redis 服务上执行操作. 要在 redis 服务上执行命令需要一个 redis 客户端. Redis 客户端在我们之前下载的的 redis 的安装包中. Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等 1.1.  Redis键key Redis 键命令用于管理 redis 的键 DEL key 该命令用于在 key 存在时删除

redis入门——redis常用命令

redis的常用命令主要分为两个方面.一个是键值相关命令.一个是服务器相关命令 1.键值相关命令 keys * 取出当前所有的key exists name 查看n是否有name这个key del name 删除key name expire confirm 100 设置confirm这个key100秒过期 ttl confirm 获取confirm 这个key的有效时长 select 0 选择到0数据库 redis默认的数据库是0~15一共16个数据库 move confirm 1 将当前数据