内存数据库redis-redis简单介绍
来源:互联网 发布:网络加速器免费 编辑:程序博客网 时间:2024/05/21 09:24
一.Redis介绍
1. 简述
Redis是一个高性能的kv对缓存和内存数据库(存的不像mysql那样的表)
Redis的存储结构就是key-value,形式如下:
注: redis中的value内部可以支持各种数据结构类型,比如可以存入一个普通的string,还可以存list,set,hashmap,sortedSet(有序的set)
2.redis应用场景
A、用来做缓存(ehcache/memcached)——redis的所有数据是放在内存中的(内存数据库)
B、可以在某些特定应用场景下替代传统数据库——比如社交类的应用
C、在一些大型系统中,巧妙地实现一些特定的功能:session共享、购物车
只要你有丰富的想象力,redis可以用在可以给你无限的惊喜…….
3. redis的特性
1/redis数据访问速度快(数据在内存中)
2/redis有数据持久化机制(持久化机制有两种:1、定期将内存数据dump到磁盘;2、aof(append only file)持久化机制——用记日志的方式记录每一条数据更新操作,一旦出现灾难事件,可以通过日志重放来恢复整个数据库)
3/redis支持集群模式(容量可以线性扩展)
4/redis相比其他缓存工具(ehcach/memcached),有一个鲜明的优势:支持丰富的数据结构
二.Redis的数据功能
1.String类型的数据
1/插入和读取一条string类型的数据
redis notrue-centos:6379> set sessionid-0001 "zhangsan"
OK
redis notrue-centos:6379> get sessionid-0001
"zhangsan"
2/对string类型数据进行增减(前提是这条数据的value可以看成数字)
DECR key
INCR key
DECRBY key decrement
INCRBY key increment
3/一次性插入或者获取多条数据
MGET key1 key2
MSET key1 value1 key2 value2 …..
4/在插入一条string类型数据的同时为它指定一个存活期限
setex bancao 10 weige
### bancao这条数据就只会存活10秒钟,过期会被redis自动清除
2.List数据结构
1/ List图示
2/ List功能演示
#从头部(左边)插入数据
redis>LPUSH key value1 value2 value3
#从尾部(右边)插入数据
redis>RPUSH key value1 value2 value3
#读取list中指定范围的values
redis>LRANGE key start end
redis> lrange task-queue 0 -1 读取整个list
#从头部弹出一个元素
LPOP key
#从尾部弹出一个元素
RPOP key
#从一个list的尾部弹出一个元素插入到另一个list
RPOPLPUSH key1 key2 ## 这是一个原子性操作
3. Hash数据结构
1/ Hash图示
Redis中的Hashes类型可以看成具有String Key和String Value的map容器
2/ Hash功能演示
1、往redis库中插入一条hash类型的数据
redis> HSET key field value
举例:
redis 127.0.0.1:6379> hset user001:zhangsan iphone 6
(integer) 1
redis 127.0.0.1:6379> hset user001:zhangsan xiaomi 7
(integer) 1
redis 127.0.0.1:6379> hset user001:zhangsan meizu 8
(integer) 1
在redis库中就形成了这样一条数据:
2、从redis库中获取一条hash类型数据的value
取出一条hash类型数据中所有field-value对
redis 127.0.0.1:6379> hgetall user001:zhangsan
1) "iphone"
2) "6"
3) "xiaomi"
4) "7"
5) "meizu"
6) "8"
取出hash数据中所有fields
redis 127.0.0.1:6379> HKEYS user001:zhangsan
1) "iphone"
2) "xiaomi"
3) "meizu"
取出hash数据中所有的value
redis 127.0.0.1:6379> hvals user001:zhangsan
1) "6"
2) "7"
3) "8"
取出hash数据中一个指定field的值
redis 127.0.0.1:6379> hget user001:zhangsan xiaomi
"8"
为hash数据中指定的一个field的值进行增减
redis 127.0.0.1:6379> HINCRBY user001:zhangsan xiaomi 1
(integer) 8
从hash数据中删除一个字段field及其值
redis 127.0.0.1:6379> hgetall user001:zhangsan
1) "iphone"
2) "6"
3) "xiaomi"
4) "7"
5) "meizu"
6) "8"
redis 127.0.0.1:6379> HDEL user001:zhangsan iphone
(integer) 1
redis 127.0.0.1:6379> hgetall user001:zhangsan
1) "xiaomi"
2) "7"
3) "meizu"
4) "8"
4. Set数据结构功能
集合的特点:无序、无重复元素
1/插入一条set数据
redis 127.0.0.1:6379> sadd frieds:zhangsan bingbing baby fengjie furong ruhua tingting
(integer) 6
redis 127.0.0.1:6379> scard frieds:zhangsan
(integer) 6
redis 127.0.0.1:6379>
2/获取一条set数据的所有members
redis 127.0.0.1:6379> smembers frieds:zhangsan
1) "fengjie"
2) "baby"
3) "furong"
4) "bingbing"
5) "tingting"
6) "ruhua"
3/判断一个成员是否属于某条指定的set数据
redis 127.0.0.1:6379> sismember frieds:zhangsan liuyifei #如果不是,则返回0
(integer) 0
redis 127.0.0.1:6379> sismember frieds:zhangsan baby #如果是,则返回1
(integer) 1
4/求两个set数据的差集
#求差集
redis 127.0.0.1:6379> sdiff frieds:zhangsan friends:xiaotao
1) "furong"
2) "fengjie"
3) "ruhua"
4) "feifei"
#求差集,并将结果存入到另一个set
redis 127.0.0.1:6379> sdiffstore zhangsan-xiaotao frieds:zhangsan friends:xiaotao
(integer) 4
#查看差集结果
redis 127.0.0.1:6379> smembers zhangsan-xiaotao
1) "furong"
2) "fengjie"
3) "ruhua"
4) "feifei"
求交集,求并集
#求交集
redis 127.0.0.1:6379> sinterstore zhangsan:xiaotao frieds:zhangsan friends:xiaotao
(integer) 2
redis 127.0.0.1:6379> smembers zhangsan:xiaotao
1) "bingbing"
2) "baby"
#求并集
redis 127.0.0.1:6379> sunion frieds:zhangsan friends:xiaotao
1) "fengjie"
2) "tangwei"
3) "liuyifei"
4) "bingbing"
5) "ruhua"
6) "feifei"
7) "baby"
8) "songhuiqiao"
9) "furong"
10) "yangmi"
5. sortedSet(有序集合)数据结构
1/ sortedSet图示
sortedset中存储的成员都有一个附带的分数值
而redis就可以根据分数来对成员进行各种排序(正序、倒序)
sortedSet存储内容示意图:
2/ SortedSet功能演示
1、往redis库中插入一条sortedset数据
redis 127.0.0.1:6379> zadd nansheng:yanzhi:bang 70 liudehua 90 huangbo
100 weixiaobao 250 yangwei 59 xiaotao
(integer) 5
2.从sortedset中查询有序结果
#正序结果
redis 127.0.0.1:6379> zrange nanshen:yanzhi:bang 0 4
1) "xiaotao"
2) "liudehua"
3) "huangbo"
4) "weixiaobao"
5) "yangwei"
#倒序结果
redis 127.0.0.1:6379> zrevrange nanshen:yanzhi:bang 0 4
1) "yangwei"
2) "weixiaobao"
3) "huangbo"
4) "liudehua"
5) "xiaotao"
3.查询某个成员的名次
#在正序榜中的名次
redis 127.0.0.1:6379> zrank nanshen:yanzhi:bang xiaotao
(integer) 0
#在倒序榜中的名次
redis 127.0.0.1:6379> zrevrank nanshen:yanzhi:bang xiaotao
(integer) 4
4修改成员的分数
redis 127.0.0.1:6379> zincrby nanshen:yanzhi:bang 300 xiaotao
"359"
redis 127.0.0.1:6379> zrevrank nanshen:yanzhi:bang xiaotao
(integer) 0
- 内存数据库redis-redis简单介绍
- 内存数据库-Redis介绍
- 内存数据库redis的简单使用
- 基于redis 内存数据库简单使用
- 【数据库开发】Redis key-value内存数据库介绍
- 内存数据库redis
- Redis 内存数据库
- redis内存数据库
- redis内存数据库
- Redis Sentinel简单介绍
- Redis简单介绍
- redis系列 ---简单介绍
- NoSQL- redis简单介绍
- 【Redis】--简单介绍
- Redis数据库介绍
- Redis数据库结构介绍
- redis数据库--简单入门
- 非关系型内存数据库Redis的基本介绍
- 听说这款数学课件制作工具双十一也搞事?
- 21、Oracle:字符串中包含单引号怎么到数据库中查询
- java Web 启动时自动执行代码的几种方式
- 程序设计思路
- Java Collections.addAll() 与 ArrayList.addAll() 的区别
- 内存数据库redis-redis简单介绍
- Kafka背景及架构介绍
- iOS crash日志符号化
- Centos 7.0 下hadoop集群模式安装(以3个节点为例,master,slave1,slave2)超详细
- BeagleBone Black从入门到放弃(一)连接及系统更新
- 工程经济有何难,思维导图来助阵
- 我不知道的前端知识
- Android Fingerprint -- HAL层的初始化工作
- numpy tolist()的用法