博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis基本使用
阅读量:4160 次
发布时间:2019-05-26

本文共 2716 字,大约阅读时间需要 9 分钟。

一、redis简介:  

redis是完全开源免费的,遵守BSD协议(BSD是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版"。),是一个高性能的key-value数据库。是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串、哈希、列表、队列、集合结构直接存取,基于内存,可持久化

redis与其他的key-value缓存产品比较有三个特点

1.redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存中进行使用。

2.redis不仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

3.redis支持数据的备份,即master-slave模式(也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机)的数据备份。

redis的优势

1.性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

2.丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

3.原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

4.丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

应用场景:

1.会话缓存(最常用)

2.消息队列(支付)

3.活动排行榜或计数

4.发布、订阅消息(消息通知)

5.商品列表、评论列表

redis数据类型:

redis一共支持五种类型:string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set 有序集合)。

1.string(字符串)

它是redis最基本的数据类型,一个key对应一个value,需要注意是一个键值最大存储512MB。

2.hash(哈希)

redis hash是一个键值对的集合, 是一个string类型的field和value的映射表,适合用于存储对象。

redis-cli 是进入redis的客户端的命令

命令:HSET KEY_NAME FIELD VALUE

HSET key field value 将哈希表 key 中的域 field 的值设为 value 。

如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

举例:hset key field "520" 

HSET key field 获取哈希表key中域field的value值

举例:hget key field

3.list(列表)

是redis简单的字符串列表,按照插入顺序排序

操作命令

lpush ----先进后出,在列表头部插入元素

举例:lpush mylist firstele

rpush -----先进先出,在列表的尾部插入元素

举例:rpush mylist secondele 

此时mylist的顺序是{firstele,secondele},secondele是后插入的,使用rpush在尾部插入元素

lrange -----出栈,根据索引,获取列表元素

举例:lrange mylist 0 2  获取mylist里获取索引0---2的元素

llen ----链表长度,元素个数

举例:llen mylist

lpop ----左边出栈,获取列表里的第一个元素

举例:lpop mylist

rpop---- 右边出栈,获取列表里面的最后一个元素

举例:rpop mylist

lindex---根据索引,取出元素

举例:lindex mylist  2  取出mylist里面索引为2的元素

Lrem---根据key,删除n个value 

ltrim---根据索引,删除指定元素

lset---根据index,设置value

linsert before---根据value,在之前插入值

linsert after---根据value,在之后插入值

注意 

出栈,该元素在链表中,就不存在了 
左边,默认为列表的头部,索引小的一方 
右边,默认为列表的尾部,索引大的一方

4.set(集合)

string类型的无序集合,不可重复

sadd--添加元素

 srem---删除命令

sismember---判断元素是否存在(存在返回1,不存在返回0)

sdiff---返回两个集合中的差集(与集合顺序有关)

举例:sdiff myset myset2 结果:set1 (myset域myset2相差set1)

sinter--- 两个集合中的交集

sunion---两个集合的并集

scard---查看具体数量

srandmember--随机提取元素

sdiffstore ---将两个集合相差的成员存储到另一个集合中

sinterstore---将两个集合交际的成员存储到另一个集合中

sunionstore---并集存储

5.zset(sorted set 有序集合)

是string类型的有序集合,不可重复

sorted set中的每个元素都需要指定一个分数,根据分数对元素进行升序排序,如果多个元素有相同的分数,则以字典序进行升序排序,sorted set 因此非常适合实现排名

ZADD key score member -->添加方法(如果值存在添加,将会重新排序)

举例:zadd nosql 0 003 添加分数为0 值为003的zset(名字是nosql)集合

zcount-->获取指定分数直接成员的个数

举例:zcount nosql 0 0 获取名字叫nosql的zset集合分数在0--0之间的数量

zrem-->删除指定的一个或多个成员

举例:zrem nosql 002   删除成员002(删除多个直接在后面添加)

zscore-->获取指定值的分数

举例:zscore nosql 003 获取成员003的分数

zrangebyscore -->根据指定的分数范围获取值

举例:zrangebyscore nosql 0 10 获取名字为nosql的zset集合里面分数在0--10之间的成员

参考:

参考:

转载地址:http://nbjxi.baihongyu.com/

你可能感兴趣的文章
素数算法
查看>>
java多线程环境单例模式实现详解
查看>>
将一个数插入到有序的数列中,插入后的数列仍然有序
查看>>
在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found
查看>>
阿里p8程序员四年提交6000次代码的确有功,但一次错误让人唏嘘!
查看>>
一道技术问题引起的遐想,最后得出结论技术的本质是多么的朴实!
查看>>
985硕士:非科班自学编程感觉还不如培训班出来的,硕士白读了?
查看>>
码农:和产品对一天需求,产品经理的需求是对完了,可我代码呢?
查看>>
第六章 背包问题——01背包
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
JSP的内置对象及方法
查看>>
android中SharedPreferences的简单例子
查看>>