reids 基本操作
redis 基本操作
1. 什么是Redis
- Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,
Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
Redis特点:
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
Redis应用场景:
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
进入redis
redis-cli --raw
redis五种数据类型、及操作 (针对key) ,value都是字符串
string
字符串list
列表hash
哈希set
集合sorted sets
有序集合
string
- #设置
set key value 例子:set test "Just do a test!"
# 获取
get key 例子:get test
# key是唯一的,不能用同一个key 不然就会覆盖
查看过期时间
- # -1 表示永久 -2 表示 不存在
ttl key 例子:ttl test
设置过期时间
- # 给已经存在 key,设置过期时间
expire key seconds 例子:expire test 12
# 设置 key的同时,设置过期时间
set key value ex seconds 例子:set test1 "ABC" ex 8
追加
- # 给已有的value,再添加新的值
append key value 例子:append test1 "123"
设置 / 获取 多个
- #设置多个 string
mset key value key value.. 例子:mset a1 "AAA111" b2 "BBBA222"
#获取多个 string
mget key key key ... 例子:mget a1 b2
key 操作 (针对所有的 key)
- # 查看所有的key
keys * 例子: keys *
# 删除
del key 例子:del b1- # 查看key是否存在 ,存在返回 1, 不存在返回 0
exists key 例子: exists b1
# 查看key类型
type key 例子:type a1
运算
- set num 1 # 自动识别,字符串里面的 整数 例子:
# +1
incr key 例 (incr num) 例子:set c3 12345
incr c3
# -1
decr key 例 (decr num) 例子:decr c3
# +整数
incrby key increment 例 (incrby num 50) 例子:incrby c3 6
# -整数
decrby key increment 例 (decrby num 50) 例子:decrby c3 6
list
设置
- # lpush 左添加 (栈), 后面来的 放第一个
lpush key value 例子: lpush l1 "abc"
#rpush 右添加 (队列) 后面来的 放最后一个
rpush key value 例子: rpush l1 "123"
- # lpush 左添加 (栈), 后面来的 放第一个
查看
- # lrange key start stop 例子: lrange l1 0 -1
例 查看所有
lrange key 0 -1
- # lrange key start stop 例子: lrange l1 0 -1
获得list的元素个数
- # llen key 例子:llen l1
查看位于lidex 位置上的元素
- # lindex key index 例子:lindex l1 0
删除
lpop
删除左边第一个 (第一个)- #rpush test2 d a b c u w y a b c y a b t c w t
lpop key 例子:lpop test2
- #rpush test2 d a b c u w y a b c y a b t c w t
rpop
删除右边第一个 (最后个)- rpop key 例子:rpop test2
lrem
删除指定value 及 数量- rpush test_list a b c w a b c a b c w
# lrem key count value 例子:
#count > 0 从左往右 删除数量为count的value (从上往下)
例 : lrem test_list 2 a 例子:lrem test 1 c
#count = 0 删除所有的 value
例 : lrem test_list 0 a 例子:lrem test2 0 c
#count < 0 从右往左 删除数量为count的value (从下往上)
例 : lrem test_list -1 b 例子:lrange test2 -1 a
- rpush test_list a b c w a b c a b c w
hash (类似与字典)
设置
- # hset key field value 例子:hset user name xlong
例 user = { name:jianeng}
hset user name jianeng
- # hset key field value 例子:hset user name xlong
获取
- # hget key field 例子:hget user name
删除
- # hdel key field 例子:hdel user name
设置多个
- #hmset key field value [field value] 例子:hmset user1 name xlong age 26 sex nan
例 user{name:jianeng , age:18, sex:male }
hmset user name jianeng age 18 sex male
- #hmset key field value [field value] 例子:hmset user1 name xlong age 26 sex nan
获取多个
- # hmget key field field 例子:hget user1 name age sex
获取全部
field value
(类似与字典里的 items)- # hgetall key 例子:hgetall user1
例
hgetall user
- # hgetall key 例子:hgetall user1
获取所有的
field
(类似与字典里的 keys)- # hkeys key 例子:hkeys user1
获取所有的
value
(类似与字典里的 values)- # hvals key 例子:hvals user1
获取
field
的个数- # hlen key 例子:hlen user1
set(集合)
设置
- # sadd key value [value] (唯一,无序) 例子:sadd tests1 q w e 1 2 3
sadd tests2 w w w w 6 6 6 6(最终只有w 和6)
- # sadd key value [value] (唯一,无序) 例子:sadd tests1 q w e 1 2 3
获取
- # smembers key 例子:smembers tests1
删除
srem
指定删除- # srem key member 例子:srem tests1 2
spop
随机删除- # spop key 例子:spop tests1
移动一个集合的值到另一个集合
- # smove oldkey newkey member 例子:smove tests1 tests2 3
判断集合存在某个值
- # sismember key value 例子:sismember tests2 w
交集
- # sinter key1 key2 .. 例子:sinter tests1 tests2
把 key1 key2的交集合并到
newkey
- # sinterstore newkey key1 key2 例子:sinterstore tests3 tests1 tests2
并集
- # sunion key1 key2 ... 例子:sunion tests1 tests2
把 key1 key2的并集合并到
newkey
- # sunionstore newkey key1 key2 例子:sunionstore tests4 tests1 tests2
差集
- # sdiff key1 key2 例子:sdiff tests1 tests2
把 key1 key2的差集合并到
newkey
- # sdiffstore newkey key1 key2 例子:sdiffstore tests5 tests1 tests2
获取集合个数
- # scard key 例子:scard tests5
随机返回一个
- # srandmember key 例子:srandmember tests4
zset(有序集合)
设置
- # zadd key score member 例子: zadd testz1 1 a1a2a3
zadd testz2 2 b1b2b3
zadd testz3 3 c1c2c3
例
zadd my_zset 1 'one'
zadd my_zset 2 'two'
zadd my_zset 3 'three'
zadd my_zset 4 'four'
zadd my_zset 5 'five'
- # zadd key score member 例子: zadd testz1 1 a1a2a3
获取
zrange
正序- #zrange key start stop (withscores) 例子:zrange testz1 0 -1
zrange my_zset 0 -1
- #zrange key start stop (withscores) 例子:zrange testz1 0 -1
zrevrange
倒序- #zrevrange key start stop 例子:zrevrange testz2 0 -1
zrevrange my_zset 0 -1
- #zrevrange key start stop 例子:zrevrange testz2 0 -1
删除
- #zrem key member 例子:zrem testz1 a1a2a3
zrem my_zset two
- #zrem key member 例子:zrem testz1 a1a2a3
索引
zrank正序
- # zrank key member 例子:zrank testz2 b1b2b3
例
zrank my_zset three
- # zrank key member 例子:zrank testz2 b1b2b3
zrevrank反序
- # zrevrank key member 例子:zrevrank testz2 b1b2b3
例
zrevrank my_zset three
- # zrevrank key member 例子:zrevrank testz2 b1b2b3
zscore : 查看score值
- # zscore key member 例子:zscore testz2 b1b2b3
例
zscore my_zset2 a
- # zscore key member 例子:zscore testz2 b1b2b3
zincrby : 修改score值
- # zincrby key score member 例子:zincrby testz2 2 b1b2b3
zcard 查看有序集合元素数
- # zcard key 例子:zcard testz2
例
zcard my_zset
- # zcard key 例子:zcard testz2
zrangebyscore 返回集合中 score 在给定区间的元素
- #返回了 score 在 2~3 区间的元素 例子:zrangebyscore testz2 21 23
zrangebyscore my_zset 2 3 withscores
- #返回了 score 在 2~3 区间的元素 例子:zrangebyscore testz2 21 23
zcount 返回集合中 score 在给定区间的数量
- # zcount key min max 例子:zcount testz2 21 23
例
zcount my_zset 2 3
- # zcount key min max 例子:zcount testz2 21 23
zremrangebyrank : 删除集合中排名在给定区间的元素
- # zrange my_zset 0 -1 withscores 例子:zremrangebyrank testz2 21 23
zremrangebyrank my_zset 1 3
- # zrange my_zset 0 -1 withscores 例子:zremrangebyrank testz2 21 23
zremrangebyscore : 删除集合中 score 在给定区间的元素
- # zrange my_zset 0 -1 withscores 例子:zremrangebyscore testz1 0 2
zremrangebyscore my_zset 1 2
- # zrange my_zset 0 -1 withscores 例子:zremrangebyscore testz1 0 2
Redis
发布和订阅
- #发布
- publish 频道 消息 例子:publish qq1 "qq.com"
- # 订阅
- subscribe 频道 例子:subscribe qq1 "hello"
reids 基本操作的更多相关文章
- Reids入门介绍
一.入门概述 1.是什么? Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式 ...
- Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- 三、Redis基本操作——List
小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...
- 二、Redis基本操作——String(实战篇)
小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...
- 一、Redis基本操作——String(原理篇)
小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...
- Linq查询基本操作
摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...
- C++ map的基本操作和使用
原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可 ...
随机推荐
- cnblogs博客申请完毕,以后再这里安家落户
cnblogs博客申请完毕,以后再这里安家落户,之前的博客就不转载了,好好搞技术,安稳过日子.
- SVG:中国地图
中国地图 <svg height="578" version="1.1" width="718" xmlns="http:/ ...
- records.config中文详解
转载:http://www.safecdn.cn/cdn/2018/12/records-config-zh/106.html records.config参数的一些备注 CONFIG proxy.c ...
- Maven父工程
1.创建Maven工程时 Packaging 选项为 pom 2.父工程目录结构只有pom.xml(父工程不进行编码) 3.需要的依赖信息在父工程中定义,子模块继承 5.将各个子模块聚合到一起 6.将 ...
- 关于 roadhog 2.0 版本之后不支持 cssModulesExclude
cssModulesExclude 是用于 cssModules模块之后 ,解决不需要 cssModules 模块的样式文件, 了解 cssModules 看这里 https://segmentfau ...
- 20165304《Java程序设计》第七周学习总结
教材学习内容总结 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系统,简称MySQL,是世界上最流行的开源数据库管理系统,其社区版(MySQL Community ...
- centos-yum离线源
配置离线源 在个别开发环境中,我们可能有限制不能连外网. 这个情况可以通过用一台同内网的机器配置离线源,然后通过vsftp公用. 安装ftp rpm命令详解 $ rpm -ivh apache-1.3 ...
- nodejs 解决跨域
1.失败 app.all('*', function (req, res, next) { res.header("Access-Control-Allow-Origin", &q ...
- delphi dxBarManager 的dxBarEdit 输入问题
Developer Express 6 想做像office2007那样界面. 问题:dxBarManager1 里面添加了cxBarEditItem1 这是个文本框,运行可以输入内容,但是当焦点失去时 ...
- Java IO流学习总结五:转换流-InputStreamReader、OutputStreamWriter
类的继承关系 Reader |__ BufferedReader.StringReader.InputStreamReader |__ FileReader Writer |__ BufferedWr ...