Redis学习(1)

Redis入门介绍

  • Redis是什么?
    Redis:REmote DIctionary Server(远程字典服务器)
    是完全开源免费的,用C语言编写的,遵守BSO协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称为数据结构服务器。

  • Redis的三个特点:
    1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启时开源再次加载进行使用。
    2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    3.Redis支持数据的备份,即master-slave模式的数据备份。

  • Redis能干什么?
    1 .内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务。
    2.取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面。
    3.模拟类似于HttpSeesion这种需要设定过期时间的功能
    4.发布,订阅信息系统
    5.定时器,计时器

  • 下载路径
    1.Http://redis.io/(英文)
    2.Http://www.redis.cn/(中文)
    3.检验是否启动成功可以在命令行输入ping,显示PONG说明启动成功。
    在这里插入图片描述

  • Redis启动后杂项基础知识
    1.Redis是单进程
    – 单进程模型来处理客户端的请求,对读写等事件的响应
    – 是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行
    – Epoll是Liunx内核为处理大批量文件描述符而做了改进的epoll,是Liunx下多路复用IO接口setlet/poll的增强版本,它能显著提高程序在大量并发连接中只有少数活跃的情况下的系统CPU利用率。
    2.默认16个数据库,类似数组下标从零开始,初始默认使用零号库。
    在这里插入图片描述
    在这里插入图片描述
    3.Select命令切换数据库
    在这里插入图片描述
    4.Dbsize查看当前数据库key的数量
    在这里插入图片描述
    5.Flushdb清空当前库
    6.Flushall清空全部库
    7.统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上
    8.Redis索引都是从零开始
    9.默认端口号6379

Redis数据类型

  • Redis的五大数据类型
    –String(字符串)
    string是redis最基本的类型,可以理解成与Memcached一模一样的类型,一个key对应一个value。
    string类型是二进制安全的,意思是redsi的string可以包含任何数据。比如jpg图片或者序列化的对象
    string类型是redis最基本的数据类型,一个redis中字符串value最多可以是512M
    –Hash(哈希,类似java里的Map)
    Redis hash是一个键值对集合
    Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
    类型java里面的Map<String,Object>
    –List(列表)
    Redis列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部(左边)或者尾部(右边)
    它的底层实际是个链表
    –Set(集合)
    Redis的Set是String类型的无需集合,他是通过HashTable实现的。
    –Zset(sorted set:有序集合)
    Redis zset和set一样也是string类型的集合,且不允许重复的成员。
    不同的是每一个元素都会关联一个double类型的分数
    redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复
  • 获得redis常用数据类型操作命令:Http://redisdoc.com/ (大范围)
  • 关于Keyd的操作(小范围)
    – 1.exists key 测试指定key是否存在
    – 2.del key1 key2 …keyN 删除给定key
    – 3.type key 返回给定key的value类型
    – 4.keys pattern 返回匹配指定模式的所有key
    – 5.rename oldkey newkey 改名字
    – 6.dbsize 返回当前数据库的key的数量
    – 7.expire key seconds 为key指定过期时间
    – 8.ttl key 返回key的剩下过期秒数(-1表示永不过期,-2表示以过期)
    – 9.select db-index 选择数据库(一共有16个数据库,下标索引从0开始)
    – 10.move key db-index 将key从当前数据库移动指定数据库
    – 11.flushdb 删除当前数据库中所有key
    – 12.flushall 删除所有数据库中的所有key

  • 关于String类型的操作
    – 1.set key value 设置key对应的值为String类型的value
    – 2. mset key1 value1 …keyN valueN 一次设置多个key的值
    – 3.mget key1 key2 …keyN 一个获取多个key的值
    – 4.incr key 对key的值做加加操作,并返回新的值
    – 5.decr key 对key的值做减减操作,并返回新的值
    – 6.incrby key integer 同incr,加指定值
    – 7.decrby key integer 同decr,减指定值
    – 8.append key value 给指定key的字符串追加value(在原有字符串后追加)
    – 9.substr key start end 返回截取过的key的字符串值
    • 性能总结:
      – 字符串可以包含任何数据,包括jpg图片或者序列化对象
      –单个value值最大上限是1G字节

  • 关于List列表的操作(单值多列)
    – 1.lpush key string 在key对应list的头部添加字符串元素
    – 2.rpop key 从list的尾部删除元素,并返回删除元素
    – 3.llen key 返回key 对应list的长度,key不存在返回0,如果key对应类型不是list返回错误
    – 4.lrange key start end 返回指定区域内的元素,下标从0开始
    – 5.rpush key string 同上 在尾部添加
    – 6.lpop key 从list的头部删除元素 ,并返回删除元素
    – 7.ltrim key start end 截取list,保留指定区间内元素
    – 8.lrem key N value 删除N个value
    – 9.lset key index value 为指定下标索引元素设置值
    – 10.linsert key before /after 值1 值2 在指定元素前面/后面插入元素
  • 性能总结:
    – 它是一个字符串双向链表,通过push,pop操作从链表的头部或尾部添加删除元素
    – list既可以做栈,也可以做队列

  • 关于Set集合类型操作(单值多value)
    – 1.sadd key member 添加一个string元素到key对应的set集合中,成功返回1,
    如果元素已经在集合中,返回0,key对应的set不存在返回错误。
    – 2.srem key member [member]从key对应set中移除给定元素,成功返回1
    – 3.smove p1 p2 member 从p1对应set中移除member并添加到p2对应set中
    – 4.scard key 返回set的元素个数
    – 5.sismember key member 判断member是否在set中
    – 6.sinter key1 key2 …keyN 返回所有给定key的交集
    – 7.sunion key1 key2 …keyN 返回所有给定key的并集
    – 8.sdiff key1 key2 …keyN 返回所有给定key的差集
    – 9.smembers key 返回key对应set的所有元素,结果是无序的

  • 关于Hash类型操作(KV模式不变,但V是一个键值对)
    – 1.hset key(类似于集合变量) value(类似于map中的键) value(类似于map中的值) 向一个集合中添加 键值对
    在这里插入图片描述
    – 2.hget key(类似于集合变量) value(类似于map中的键) 从集合中通过键找值
    在这里插入图片描述
    – 3.hmset 原理同上1,但可以设置多个值
    在这里插入图片描述
    – 4.hmget 原理同上2,当可以获取多个值
    在这里插入图片描述
    – 5.hgetall key获取变量中的所有键值对
    在这里插入图片描述
    – 6.hdel key value 通过键值删除集合中指定值
    在这里插入图片描述
    – 7.hlen key 获取集合长度
    在这里插入图片描述
    – 8.hkeys key 获取所有的键
    在这里插入图片描述
    – 9.hvals key 获取所有的值
    在这里插入图片描述
    – 10.hincrby key value number在集合中给指定键所对应的值增加number(整数)
    在这里插入图片描述
    – 11.hincrbyfloat key value number在集合中给指定键所对应的值增加number(小数)
    在这里插入图片描述
    – 12.hsetnx key value value 判断集合中是否存在键值对,如果存在,操作无效,反之就添加
    (集合中存在age所以就添加失败,map集合键是唯一的)
    在这里插入图片描述
    (集合中不存在所以添加成功)
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值