radis

Redis

REmote DIctionary Server(远程字典服务器)

是完全开源免费的,用C语言编写的,遵守BSD协议,

是一个高性能的(key/value)分布式内存数据库,基于内存运行

并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,

也被人们称为数据结构服务器

 

作用:

1:内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务

2:取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面

3:模拟类似于HttpSession这种需要设定过期时间的功能

4:发布、订阅消息系统

5:定时器、计数器

 

特点:

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

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

3:Redis支持数据的备份,即master-slave模式的数据备份

 

如何获取redis

1: http://redis.io/

2: http://www.redis.cn/

 

Key关键字指令

常用指令:key

Keys *:指令   查看当前这个库中所有的key值

exists key名字:  判断某个key值是否存在 0表示不存在 1表示存在

move  key名字 数据库的索引下标: 将某个值移除到指定的库中

Redis默认有16个库,我们可以通过修改redis配置文件redis.conf来改变库的数量

Select 下标可以切换不同的数据库: select 下标

expire key名字 秒:设定指定的key的存活时间

ttl  key名字:查看当前的key还有多少存活时间 -1 表示永不过期,-2表示已经过期

type  key名字: 查看当前key的类型(key String,Object)

 

String类型数据指令

Set  key名字  value值: 设置单一键值对(key值相同会覆盖原来的值,类似于map集合)

Get  key名字 :获取指定key的值

Del  key名字 :删除指定名称 key

Append  key名字 新值: 在原有的值的基础上添加新的值

Strlen  key名字: 获取字符串的长度

 

(value值必须是数字)

Incr(value值自动加1) : incr  key名字;

decr(value值自动减1) :decr key名字;

incrby 递增值: incrby key名字 数字;

decrby 递减值:decrby key名字 数字;

 

Getrange  : GETRANGE key  start  end: 获取value值的一部分

Setrange :SETRANGE key  起始位置  值: 从起始位置开始替换值

Setex: SETEX key名字 存活时间 值: 设定一组值同时设定存活时间(单位秒);

Setnx: SETNX key名字 值: 设置永久存活的一组值。(key值冲突无法存入值--返回值为0)

Mset: mset key 值 key 值....  一次设定多组值,如果key值存在也会覆盖

Mget: mget key  key  一次获取多个key的值

Msetnx: 一次设定多组key值,如果有key值存在无法添加完成

 

List类型(添加  删除内容):

Lpush: 向集合中添加内容  lpush 集合的名字 值 显示的顺序和添加的顺序相反。

Rpush: 向集合中添加内容  rpush 集合的名字 值 添加顺序就是显示顺序

Lrange  集合的名字 起始位置  结束位置(-1代表到集合的末尾)

Llen: llen 集合的名字 查看集合的长度  

Lpop:  lpop 集合的名称  移除集合中的第一个元素

Rpop: rop 集合的名称移除集合中的最后一个元素

lindex : 获取制定索引的值   lindex 集合的名称  索引数值

Lrem :删除指定数量的值: lrem 集合的名称  个数 值(集合中有重复值);

 

Set集合

Sadd:添加值 sadd  集合名称  值....

Smembers:查看值 smembers  集合名称

Scard : 集合中元素个数  scard  集合名称

Srem : 删除集合中的某个值  srem  集合名称  值;

SPOP: 随机从集合中移除一个数据   spop 集合名称

Smove: 将集合中的某个值赋给另外一个集合: SMOVE 集合1 集合2  值;

Sdiff: 差集

Sinter:交集

Sunion:并集

 

Hash(哈希)(key value(key value))

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

Hset:存放一组键值对  hset key 值的名称  具体的值;(重复添加会覆盖原来的值) 

Hget:获取一个值: hget key 值的名称

Hmset: 设定多组键值对 HMSET customer id 1 name zs address beijing

Hmget: 获取过个键对应的值 hmget customer id name address

Hgetall: 获取所有的数据 hgetall  key值;

Hdel: 删除某个指定的key的一组value  hdel customer id

Hlen: 当前的key 有几组对应的键值对

Hexists: 判断当前key中是否有指定名称的键值对: hexists customer id;

Hkeys:获取所有的key

Hvals: 获取所有的值

Hincrby: 增加指定步长的数据  hincrby customer age 2;

Hincrbyfloat: 在原有的基础上增加指定的小数。 hincrbyfloat customer course 0.5

Hsetnx: 如果value中的key重复不能添加到集合中。

 

Zset

zset(sorted set 有序集合) 是string类型的有序集合,也不可重复

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

Zadd:创建集合并设定标准 zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5(等级划分的数据)

游戏 : 青铜  白银 黄金。。。

普通 vip

Zrange: 查询所有的标准 ZRANGE zset01 0 -1 , ZRANGE zset01 0 -1 withscores

ZRANGEBYSCORE :根据分数查询内容

ZRANGEBYSCORE zset01 60 90 (注意如果前面添加”(” 表示不包含节点的意思) withscores limit 起始位置 数量.zrangebyscore zs01 (10 30

Zrem :删除元素 zrem 集合  某score下对应的value值。ZREM zset01 v5

Zcard: 统计有几个键值对 zcard 集合

Zcount: zcount 集合 数值1 数值2  统计区间的值

Zrank : 统计对应的下标  zrank 集合名 values  zrank zs01 v3 

Zscore : zscore  集合名  values 获取对应的分数   zscore zs01 v1

 

事务控制

开启事务:

Multi

提交事务

Exec

回滚事务

Discard

Redis事务不具备原子性,只要是正常执行的指令就会正常执行,遇到错误跳过错误,后面指令继续执行。

 

 

posted @ 2020-06-04 16:23  master_hxh  阅读(324)  评论(0编辑  收藏  举报