Redis(一) 简介

简介

是以key-value形式存储, 和传统的关系型数据库不一样, 不一定遵循传统数据库到的一些基本要求(非关系型的, 分布式的, 开源的, 水平可扩展的)

优点:

对数据高并发读写

对海量数据的高效率存储和访问

对数据的可扩展性和高可用性

缺点:

redis(ACID处理非常简单)

无法做到太复杂的关系数据库模型

数据类型

Redis是以key-value store存储, data structure service数据结构服务器。键可以包含: 字符串, 哈希, 链表, 集合, 有序集合。这些数据集合都支持push/pop, add/remove及取交集以及更丰富的操作, redis支持各种不同的方式排序, 为了保证效率, 数据都是缓存在内存中, 它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加到文件中

Redis一共分为五种基本数据类型: String, Hash, List, Set, ZSet

String类型

String类型包含很多种类型的特殊类型, 并且是二进制安全的。

set和get方法

设置值: set name bhz 取值 get name

删除值: del name

使用setnx(not exist)

name 如果不存在进行设置, 存在就不需要进行设置了, 返回0

使用setex(expired)

setex color 10 red设置color的有效期为10秒, 10秒后返回nil(在redis里nil表示空)

使用setrange替换字符串:

set email [email protected]

setrange email 10 ww(10表示从第几位开始替换, 后面跟上替换的字符串)

使用一次性设置多个和获取多个值的mset, mget方法

mset key1 bhz key2 bai key3 28

对应的

mget key1 key2 key3方法

对应的也有msetnx和mget方法

一次性设置和取值的getset方法

set key4 cc

getset key4 changechun返回旧值并设置新值的方法

incr和decr方法: 对某一个值进行递增和递减

incrby和decrby方法: 对某个值进行指定长度的递增和递减

append [name]方法: 字符串追加方法

strlen [name]方法: 获取字符串的长度

Hash类型

Hash类型是String类型的field和value的映射表, 或者说一个String集合。它特别适合存储对象, 相比较而言, 将一个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间, 并方便存取整个对象。

形如: hset myhash field1 hello(含义是hset是hash集合, myhash是集合名字 field1是字段名hello为其值) 使用hget myhash field1获取内容, 也可以存储多个值。

hmset可以进行批量存储多个键值对: hmset myhash sex nan addr Beijing, 也可使用hmget进行批量获取多个键值对

同样也有hsetnx, 和setnx大同小异

hincrby和hdecrby集合递增和递减

hexists是否存在key 如果存在返回 不存在返回0

hlen 返回hash集合里的所有的键值

hdel 删除指定hash的field

hkeys 返回hash里所有的字段

hvals 返回hash的所有value

hgetall 返回hash里所有的key和value

List类型

List类型是一个链表结构的集合, 其主要功能有push, pop, 获取元素等。更详细的说, List类型是一个双端链表的结构, 可以通过相关操作进行集合的头部或者尾部添加删除元素, list的设计非常简单精巧, 即可以做为栈, 又可以作为队列。

lpush方法: 从头部加入元素(栈) 先进后出

lpush list1 “hello”

lpush list1 “world”

lrange list1 0 -1

rpush方法: 从尾部加入元素(队列) 先进先出

rpush list2 “beijing”

rpush list2 “sxt”

lrange list2 0 -1

linsert方法: 插入元素

linsert list3 before [集合的元素][插入的元素]

lset方法: 将指定下标的元素替换掉

lrem方法: 删除元素 返回删除的个数

ltrim方法: 保留指定key的值范围内的数据

lpop方法: 从list的头部删除元素, 并返回删除元素

rpop方法: 从list的尾部删除元素, 并返回删除元素

rpoplpush方法: 第一步从尾部删除元素, 然后第二步并从头部加入元素

lindex方法: 返回名称为key的list中index位置的元素

llen方法: 返回元素的个数

set类型和zset类型

set集合是string类型的无序集合, set是通过hashtable实现的, 对集合可以取交集, 并集, 差集

saddd方法: 向名称为key的set中添加元素, set集合不允许重复元素

smembers: 查看set集合的元素

srem方法: 删除set集合的元素

spop方法: 随机返回删除的key

sdiff方法: 返回两个集合的不同元素(哪个集合在前面就以哪个集合为标准)

sdiffstore方法: 将返回的不同元素存储到另外一个集合里

这里是把set1和set2的不同元素(以set1为准)存储到set3集合里

sinter方法: 返回集合的交集

sinterstore方法: 返回交集结果, 存入set3中

sunion方法: 取并集

sunionstore方法: 取得并集, 存入set3中

smove方法: 从一个set集合移动到另一个set集合里

scard方法: 查看集合里元素个数

sismember方法: 判断某元素是否为集合中的元素, 返回1代表是集合中的元素, 0代表不是

srandmember方法: 随机返回一个元素

zdd向有序集合中添加一个元素, 该元素如果存在, 则更新顺序, 在重复插入的时候, 会根据顺序属性更新

zrem 删除名称为key的zset中的元素member

zincrby以指定值去自动递增或者减少, 用法和之前的incrby类似

zrangebyscore 找到指定区间范围的数据进行返回

zremrangebyrank 删除1到1

zremrangebyscore 删除指定序号

zrank 返回排序索引 从小到大排序

zrevrank 返回排序索引 从大到小排序

zrangebyscore zset1 2 3 withscores 找到指定区间范围的数据进行返回

zcard 返回集合里所有元素的个数

zcount 返回集合中score中给定区间中的数量

Redis高级命令及特性

返回满足的所有键keys *(可模糊匹配)

exisits是否存在指定的key

expire设置某个key的过期时间, 使用ttl查看剩余时间

persist取消过期时间

select 选择数据库 数据库为0到15(一共16个数据库)默认进入的是0数据库

move [key][数据库下标]将当前数据中的key转移到其他数据库中

randomkey随机返回数据库里的一个key

rename重命名key

echo 打印命令

dbsize 查看数据库的key数量

info 获取数据库信息

config get实时传输收到的请求 config get * 返回所有配置

flushdb 清空当前数据库, flushall 清空所有数据库

发布了69 篇原创文章 · 获赞 8 · 访问量 9411

猜你喜欢

转载自blog.csdn.net/u011414629/article/details/102529394