redis

阶段一、认识redis

1、什么是redis

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:RemoteDictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

2、redis特点:

快速响应,数据量小

Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。

3、Redis应用场景:

因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

4、端口

mysql端口:3306

redis端口:6379

mongoDB端口:27017

阶段二、认识五种类型

1、string字符串
2、list列表
3、hash哈希
4、set集合
5、sorted sets有序集合

阶段三、五种类型的操作

进入redis

进入:redis-cli --raw

不能进入,就安装:

sudo apt-get update

sudo apt-get install redis-server

1、string字符串
  • 可以为整形、浮点型和字符串,统称为元素

# 基本操作
# 设置
set key value 例:set name 'zcm'
# 获取
get key 例:get name
# key是唯一的,不能用同一个key 不然就会覆盖

# 查看过期时间
# -1 表示永久 -2 表示不存在
ttl key 例: ttl name

# 设置过期时间
# expire key seconds 例: expire name 20
# 设置key的同时,设置过期时间
set key value ex seconds 例: set age 18 ex 20

setex key seconds value 例: setex sex 20 'nan'

# 追加
# 给已有的value,再添加新的值
append key value 例: append name love
# get name

# 设置/获取多个
# 设置多个 string
mset key value key value .. 例: mset username 'lucky' password ''
# 获取多个
mget key key key ... 例: mget username password

# key操作
# 查看所有的key 例: keys *
# 删除
del key 例: del name
# 查看key是否存在,存在返回 1,不存在返回 0
exists key
# 查看key类型
type key

# 运算
set num 1 # 自动识别,字符串里面的 整数
# +1
incr key 例: incr num
# -1
decr kye 例: decr num
# +整数
incrby key increment 例: incrby num 50
# -整数
decrby key increment 例: decrby num 50
2、list 列表

实现队列,元素不唯一,先入先出原则

# 设置
# lpush 左添加 (栈 先进后出)
lpush key value # 例: lpush li 1 2 3 4
# rpush 右添加 (队列 先进先出)
rpush key value # 例: rpush li 1 2 3 4

# 查看
# lrange key start stop
例 查看所有
lrange li 0 -1

# 获得list的元素个数
llen key 例: llen li

# 查看位于 lindex 位置上的元素
lindex key index 例: lindex li 3

# 删除
# 删除左边一个
lpop key 例:lpop li
# 删除右边一个
rpop key 例:rpop li
# 指定删除
rpush my_list a a b b c d e e f
# lrem key count value

# count > 0 从左往右 删除数量为count的value
例:lrem my_list 2 a
# count = 0 删除所有的 value
例:lrem my_list 0 b
# count < 0 从右往左 删除数量为count的value
例:lrem my_list -2 e
3、hash哈希

key : (field : value)

是一个string类型的field和value的映射表,特别适合用于存储对象

hash的key必须是唯一的

# 设置
# hset key field value 例:user {name:lucky} hest user name lucky
# 获取
# hget key field 例:hget user name
# 删除
# hdel key field 例:hdel user name
# 设置多个
# hmset key field value [field value]
例:user{name:lucky,age:18,sex:male}
hmset user name lucky age 18 sex male
# 获取多个
# hmget key field field..
例:hmget user name age sex
# 获取全部 field value
# hgetall key 例:hgetall user
# 获取所有的 field
# hkeys key 例:hkeys user
# 获取所有的 value
# hvals key 例:hvals user
# 获取 field 的个数
# hlen key 例:hlen user
# 获取 field 的类型
# type key 例:type user
4、set集合

各不相同的元素

# 设置
# sadd key value [value] (唯一,无序)
例:sadd my_set a w c d w e
# 获取
# smembers key 例:smembers my_set
# 删除
# srem 指定删除 srem key member 例:srem my_set c
# spop 随机删除 spop key 例:spop my_set
# 移动一个集合的值到另一个集合
# smove oldkey newkey member 例:smove my_set my_set2 b
# 判断集合存在某个值
# sismember key value 例:sismember my_set2 b
# 交集
# sinter key1 key2 .. 例:sinter my_set my_set2
# 把 key1 key2 的交集合并到 newkey
# sinterstore newkey key1 key2 例:sinterstore new_set my_set my_set2
# 并集
# sunion key1 key2 .. 例:sunion my_set my_set2
# 把 key1 key2 的并集合并到 newkey
# sunionstore newkey key1 key2 例:sunionstore new_set2 my_set my_set2
# 差集
# sdiff key1 key2 例:sdiff my_set my_set2
# 把key1 key2 的差集合并到 newkey
# sdiffstore newkey key1 key2 例:sdiffstore new_set3 my_set my_set2
# 获得集合个数
# scard key 例:scard my_set
# 随机返回一个
# srandmember key 例:srandmember my_set
5、sorted set有序集合
# 设置
# zadd key score member (权,权重,顺序)
例:
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'
# 获取
# zrange 正序
# zrange key start stop (withscores) 例:zrange my_zset 0 -1
# zrevrange 倒序
# zrevrange key start stop 例:zrevrange my_zset 0 -1
# 删除
# zrem key member 例:zrem my_zset two
# 索引
# zrank 正序
# zrank key member 例:zrank my_zset three
# zrevrank 反序
# zrevrank key member 例:zrevank my_zset three
# zcard 查看有序集合元素数
# zcard key 例:zcard my_zset
# zrangebyscore 返回集合中 score 在给定区间的元素
# zrange my_zset 0 -1 withscores 返回全部元素
# zrangebyscore my_zset 2 3 withscores 返回了 score 在 2~3 区间的元素
# zcount 返回集合中 score 在给定区间的数量
# zcount key min max 例:zcount my_zset 2 3
# zscore 查看score值
# zscore key member 例:zscore my_zset one
# zremrangebyrank 删除集合中排名在给定区间的元素
# zrange my_zset 0 -1 withscores 删除全部元素
# zremrangebyrank my_zset 1 3
# zremrangebyscore 删除集合中 score 在给定区间的元素
# zrange my_zset 0 -1 withscores 删除全部元素
# zremrangebyscore my_zset 1 2

05 redis(进阶)的更多相关文章

  1. Redis进阶实践之九 独立封装的RedisClient客户端工具类(转载9)

    Redis进阶实践之九 独立封装的RedisClient客户端工具类 一.引言 今天开始有关Redis学习的第九篇文章了,以后肯定会大量系统使用Redis作为缓存介质,为了更好的更好的Redis,自己 ...

  2. Redis进阶实践之十三 Redis的Redis-trib.rb文件详解

    一.简介     事先说明一下,本篇文章不涉及对redis-trib.rb源代码的分析,只是从使用的角度来阐述一下,对第一次使用的人来说很重要.redis-trib.rb是redis官方推出的管理re ...

  3. Redis进阶实践之十六 Redis大批量增加数据

    一.介绍      有时,Redis实例需要在很短的时间内加载大量先前存在或用户生成的数据,以便尽可能快地创建数百万个键.这就是所谓的批量插入,本文档的目标是提供有关如何以尽可能快的速度向Redis提 ...

  4. Redis进阶实践之十八 使用管道模式加速Redis查询

    一.引言             学习redis 也有一段时间了,该接触的也差不多了.后来有一天,以为同事问我,如何向redis中批量的增加数据,肯定是大批量的,为了这主题,我从新找起了解决方案.目前 ...

  5. Redis进阶实践之十三 Redis的Redis-trib.rb脚本文件使用详解

    转载来源:http://www.cnblogs.com/PatrickLiu/p/8484784.html 一.简介 事先说明一下,本篇文章不涉及对redis-trib.rb源代码的分析,只是从使用的 ...

  6. Redis进阶实践之七Redis和Lua初步整合使用(转载 7)

    Redis进阶实践之七Redis和Lua初步整合使用 一.引言 Redis学了一段时间了,基本的东西都没问题了.从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运 ...

  7. Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务(转载6)

    Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务 一.引言 今天本来没有打算写这篇文章,但是,今天测试Redis的时候发现了两个问题 ...

  8. Redis进阶实践之五Redis的高级特性(转载 5)

    Redis进阶实践之五Redis的高级特性 一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今 ...

  9. Redis进阶实践之四Redis的基本数据类型(转载4)

    Redis进阶实践之四Redis的基本数据类型 一.引言 今天正式开始了Redis的学习,如果要想学好Redis,必须先学好Redis的数据类型.Redis为什么会比以前的Memchaed等内存缓存软 ...

  10. Redis进阶实践之三如何在Windows系统上安装安装Redis(转载)

    Redis进阶实践之三如何在Windows系统上安装安装Redis 一.Redis的简介 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括 ...

随机推荐

  1. linux下的动态链接库管理

    LD_LIBRARY_PATH Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径.(该路径在默认路径之前查找) 移植程序时的经常碰到需要使用一些特定的动 ...

  2. JQUERY实现点击INPUT使光标移动到最后或指定位置

    下面本文章给大家简单介绍一下JQUERY实现点击INPUT使光标移动到最后或指定位置例子,希望对各位有帮助,你要知道面对一个 处女座的 需求者, focus()是远远不够的,比如说“我点进去的时候光标 ...

  3. 构建高性能插件式Web框架

    基于MVC插件模式构建支持数据库集群.数据实时同步.数据发布与订阅的Web框架系统.如下图: 1.基于插件式开发 采用插件模式开发的优点是使得系统框架和业务模式有效地进行分离,系统更新也比较简单,只需 ...

  4. struts2+extjs文件上传完整实现(攻克了上传中的各种问题)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/shanhuhau/article/details/28617999 首先须要引入上传控件 <s ...

  5. PIL 图像字符画绘制

    from PIL import Image ascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]? ...

  6. Uva 11419 我是SAM

    题目链接:https://vjudge.net/problem/UVA-11419 题意:一个网格里面有一些目标,可以从某一行,某一列发射一发子弹,可以打穿: 求最少的子弹,和在哪里打? 分析: 听说 ...

  7. 【luogu P3709 大爷的字符串题】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3709 离散化+区间众数..? #include <iostream> #include < ...

  8. 【luoguP1996】【luogu-original】约瑟夫问题

    先来看题目: P1996 约瑟夫问题 题目背景 约瑟夫是一个无聊的人!!! 题目描述 n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人 ...

  9. Mac 使用问题

    Mac 使用 Mac改变系统截图存储位置 鼠标在屏幕中间上下滚动时,有时反应不灵敏: 看看偏好设置-> 鼠标 -> 跟踪速度或者手势部分是否有哪里设置不当: 考虑重新开启鼠标鼠标底部有一个 ...

  10. Mac改变系统截图存储路径

    时间:2018年9月13日 人物:同事和我 事情:看苹果秋季新品发布会,并且想要截图下来当时的新品介绍. 问题:系统的截图默认是存储在桌面,整理的时候,不是很方便. Mac截图快捷键: 截取选中区域: ...