redis操作基本命令
Redis—— Remote Dictionary Server,它是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,我们可使用它构建高性能,可扩展的Web应用程序。
具有以下特点:
- 异常快速: Redis数据库完全在内存中,因此处理速度非常快,每秒能执行约11万集合,每秒约81000+条记录。
- 数据持久化:Redis支持数据持久化,可以将内存中的数据存储到磁盘上,方便在宕机等突发情况下快速恢复。
- 支持丰富的数据类型: 相比许多其他的键值对存储数据库,Redis拥有一套较为丰富的数据类型。
- 数据一致性: 所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。
- 多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如 Web应用程序会话,网页命中计数等。
首先是在ubuntu下的安装:
下载:
root@localhost:~# wget http://download.redis.io/releases/redis-3.0.0.tar.gz
解压:
root@localhost:~# tar zxvf redis-3.0.tar.gz
编译安装:
root@localhost:~#cd redis-3.0.0 && make && make install
查看安装版本:
root@localhost:~# src/redis-server -v
基本组件:
| 组件 | 用途 |
|---|---|
| redis-server | Redis服务器的启动程序。 |
| redis-cli | Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作。 |
| redis-benchmark | Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能。 |
| redis-stat | Redis状态检测工具,可以检测Redis当前状态参数及延迟状况。 |
启动redis服务:
root@localhost:~# src/redis-server
连接redis:
root@localhost:~# src/redis-cli
127.0.0.1:6379>
基本参数配置:
| 参数 | 作用 |
|---|---|
| daemonize | 是否以后台daemon方式运行redis服务。 |
| port | redis服务端口,默认6379。 |
| timeout | 请求超时时间。 |
| requirepass | 连接数据库密码。 |
redis.config中daemonize参数默认为no,为了让redis服务在后台运行,我们需要将daemonize参数设置为yes。
SET指令:
redis> SET key value //如果key值相同则覆盖原值,并且清除原值的保存时间
redis> SETEX key seconds value //添加生存时间,以秒为单位
redis> GET key //如果key不存在,则返回nil(并非null),如果value非字符串,则报错,因为GET命令仅能获取string类型数据
redis> APPEND key appendValue // 对已存在的字符串进行追加,如果key不存在,则相当于set直接赋值
redis> MSET key value [key1 value1...] //同时set多个,存在则覆盖
redis> MGET key key1... //同时获取多个key值,如果某个key不存在,则当前key返回nil 例如:
127.0.0.1:6379> mget age gender sex
1) "12"
2) "man"
3) (nil) redis> SETRANGE key offset value //用value覆盖当前key,从偏移量offset开始,如果offset大于原value长度,则中间每个空白均采用用零字节"\x00"填充
redis> STRLEN key //返回当前key存储的string的长度,value非string时,报错
其它指令:
| 指令 | 用途 |
|---|---|
| GETSET | 设置键的字符串值,并返回旧值。 |
| GETRANGE | 得到字符串的子字符串存放在一个键。 |
| GETBIT | 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 |
| SETBIT | 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 |
| SETNX | 将 key 的值设为 value ,当且仅当 key 不存在。 |
| MSETNX | 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 |
| PSETEX | 和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。 |
| INCR | 将 key 中储存的数字值增一。 |
| INCRBY | 将 key 所储存的值加上指定增量。 |
| INCRBYFLOAT | 为 key 中所储存的值加上指定浮点数增量。 |
| DECR | 将 key 中储存的数字值减一。 |
| DECRBY | 将 key 所储存的值加上指定增量。 |
HSET指令:
使用HSET命令来将哈希表 key 中的域 field 的值设为 value(即每个key存储的是很多键值对):
redis> HSET key field value # 设置一个新域
设置多个:
HMSET key field value [field value ...] //如果 key 不存在,将会创建一个空的哈希表并执行HMSET操作,如果添加的域已存在哈希表中,那么它将被覆盖。
获取指定key下的指定field值:
redis> HGET key field
获取多个:
redis> HMGET key field1 field2 field3... # 返回值的顺序和传入参数的顺序一样,如果field不存在,则返回nil
获取该key下全部field对应的field及value值(返回值格式为field1 value1然后是field2 value2...),所以返回值长度是field长度的2倍:
redis> HGETALL key
验证给定key下的field是否存在:
redis> HEXISTS key field //存在返回1,不存在返回0
返回当前key下所有field:
redis> HKEYS key // 当 key 不存在时,返回一个空表
返回当前key下所有field的长度和:
redis> HLEN key //当 key 不存在时,返回 0
删除给定key下的field:
redis> HDEL key field //如果是不存在的域,那么它将被忽略掉
LIST:
list首先是字符串列表,list相关命令:
左插入:
redis> LPUSH key value1 values2 //依次插入value1,value2,先插入的value在list的越下方
将列表 key 下标为index的元素的值设置为 value:
redis>LSET key index value //列表 key 必须是已存在的,而且index不能超出列表长度范围
获取到指定位置的 value:
redis>LINDEX key index //index为0表示第一个元素即list结构最低层的数据,1表示第二个元素;-1表示倒数第一个
将值 value 插入到列表 key 当中,位于值 pivot 之前或之后:
redis> LINSERT key BEFORE|AFTER value1 value //在value1之前或之后插入数据value,当 value1不存在于列表 key 时,不执行任何操作。当 key 不存在时, key 被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误
移除列表中与参数 value 相等的元素:
redis> LREM key count value
count 的值可以是以下几种:
- count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
- count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
- count = 0 : 移除表中所有与 value 相等的值。
获取列表的长度:
redis> LLEN key //如果 key 不存在,返回 0;如果 key 不是列表类型,返回一个错误
让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除:
redis> LTRIM key start stop
无序集合操作:
redis中的集合是一个无序的字符串集合,可以快速进行增、删、改、查、等操作:
插入:
redis> SADD key member1 member2... //已经存在member会被忽略,key不存在则创建key并插入该key集合
随机取出当前集合中的某个元素:
redis> SPOP key //如果所有数据均已pop出去,则返回nil
获取集合中全部的元素:
redis> SMEMBERS key
查看set集合中的数量:
redis>SCARD key
获取key1集合中key2不包含的数据:
redis> SDIFF key1 key2
获取集合的交集:
redis> SINTER key1 key2
返回给定集合的并集:
redis> SUNION key1 key2
判断集合是否包含某个元素:
redis> SISMEMBER key member //为1则存在member,0则不存在
将 member 元素从 source 集合移动到 destination 集合:
redis> SMOVE source destination member //如果 source 集合不存在或不包含指定的 member 元素,则SMOVE命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去;当 destination 集合已经包含 member 元素时,SMOVE命令只是简单地将 source 集合中的 member 元素删除
将元素从集合中移除:
redis> SREM key member1 member2..
有续集合:
有序集合与普通集合非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分,这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但评分可以重复。
有序集合可以以非常快的速度进行 访问、 添加、 删除 和 更新 元素。
将一个或多个 member 元素及其 score 值加入到有序集 key 当中:
redis> ZADD key score value //score 值可以是整数值或双精度浮点数
移除指定成员:
redis> ZREM key member1 member2...
获取成员评分:
redis> ZSCORE key member //注意返回值是字符串
获取集合成员:
redis > ZRANGE key start stop [WITHSCORES] //显示整个有序集成员
查看集合成员的数量:
redis > ZCARD key
根据score值范围,查看集合成员的数量:
redis> ZCOUNT key min max
获取到给定元素在集合中的排名:
redis> ZRANK key member
为给定的成员评分值加上增量:
redis> ZINCRBY key increment member
KEYS指令:
keys指令用于获取所有的key值:
redis> KEYS pattern //pattern正则表达式匹配
判断指定key是否存在:
redis> EXISTS key //存在返回 1 ,否则返回 0
将当前数据库的 key 移动到给定的数据库 db 当中:
redis> MOVE key db //redis默认db为0,即使用第一个数据库,这里可以随意指定
修改key名:
redis> RENAME key newKey //当 key 和 newkey 相同,或者 key 不存在时,返回一个错误
实现排序:
redis> SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination]
序列化给定key的值:
redis> DUMP key
为key设置生存时间:
redis> EXPIRE key seconds
获取给定 key 剩余生存时间(TTL, time to live):
redis> TTL key //当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回
redis操作基本命令的更多相关文章
- Atitit.redis操作总结
Atitit.redis操作总结 1.1. 获取redis所有kv1 1.2. dbsize:返回当前数据库中key的数目 1 1.3. 一起吧所有key列出来1 1.4. Java连接redis ...
- 基于 php-redis 的redis操作
基于 php-redis 的redis操作 林涛 发表于:2016-5-13 12:12 分类:PHP 标签:php,php-redis,redis 203次 redis的操作很多的,下面的例子都是基 ...
- redis操作
测试环境redis操作 cd /export/servers/redis-2.8.9/src/./redis-cli -n 0 keys keys(pattern):返回满足给定pattern的所有k ...
- php的redis 操作类,适用于单台或多台、多组redis服务器操作
redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台. ...
- Redis操作Set工具类封装,Java Redis Set命令封装
Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...
- Redis操作List工具类封装,Java Redis List命令封装
Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- 设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类
1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式. 在它的核心结构中仅仅包括一个被称为单例类的特殊类. 通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问.从而方便对实例个 ...
随机推荐
- 《Beginning Java 7》 - 6 - 深入理解 String
public final class String implements Serializable, Comparable<String>, CharSequence 所以: 1. Str ...
- luogu1357花园(矩阵运算)(状压DP)
不得不说本蒻做这个题目的时候内心是很蒙蔽的qwq 推了规律找错了结果还没有暴力的分数高qwq...... 开数组\(f[i][j]\)来记录前i个花圃,(这里运用到状压的思想)其中最近的m个的状态(二 ...
- 当页面滚动到距顶部一定高度时某DIV自动隐藏和显示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- scroll滚动到一定距离触发事件/返回顶部animate
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MySQL直接导出CSV文件,并解决中文乱码的问题
需求: 需要导出hr_users 表中的部分字段的数据,以前是用PHP写脚本,然后导出CSV文件. 在MySQL中,它自己就能导出CSV文件 ,只不过是有如下几个问题需要大家解决. 1. 生成文件不成 ...
- 10分钟教你用Python玩转微信之抓取好友个性签名制作词云
01 前言+展示 各位小伙伴我又来啦.今天带大家玩点好玩的东西,用Python抓取我们的微信好友个性签名,然后制作词云.怎样,有趣吧~好了,下面开始干活.我知道你们还是想先看看效果的. 后台登录: 词 ...
- P1642 规划 01分数规划+树形DP
$ \color{#0066ff}{ 题目描述 }$ 某地方有N个工厂,有N-1条路连接它们,且它们两两都可达.每个工厂都有一个产量值和一个污染值.现在工厂要进行规划,拆除其中的M个工厂,使得剩下的工 ...
- PHP查询数据库,对象结果集转化为数组
$row = $this->db->get();//得出对象结果集 $result = array(); if($row) { //转化为数组 while($value = $row-&g ...
- 用 gdb 和 qemu 调试 grub
因为qemu内置了gdbserver,所以我们可以用gdb调试qemu虚拟机上执行的代码,而且不受客户机系统限制. 以下内容是我调试 grub 0.97 时的一份笔记. 准备 qemu, gdb,以及 ...
- java中锁
s锁的作用是就是保证线程安全,但是从另外成都讲影响了效率: 1 synchronized关键字 这个是虚拟机底层实现的, java中的关键字,内部实现为监视器锁,主要是通过对象监视器在对象头中的字段来 ...