redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的web应用程序的完美解决方案
三个主要特点:
1,Redis数据库完全在内存中,使用磁盘仅用于持久性
2, Redis拥有一套较为丰富的数据类型
3, Redis可以将数据复制到任意数量的从服务器
Redis的优势:
1,异常快速,每秒能执行约11万集合,每秒约81000天记录
2,支持丰富的数据类型,可以支持strings---字符串,hashes , lists---链表,set---集合,and sorted sets,
3,操作都有原子性,保证了如果两个客户端同时访问Redis服务器将会获得更新后的值
4,多功能实用工具 ,可以有多个用途,例如缓存,数据库,消息,队列使用,任何短暂的数据,应用程序
NoSQL适用场景
1, 对数据高并发读写
2, 对海量数据的高效率存储和访问 ----fridfeed 网站----sql对亿级别的查询特慢
3, 对数据的高可扩展性和高可用性
应用场景:
1, 直接访问Redis:Application ----->Redis
2, 应用程序直接访问Redis,只有当Redis访问失败,才访问Mysql
Redis安装过程,比较简单,很多地方都有,在此不做介绍
启动redis
redis-server
默认端口时6379
进入redis客户端
redis-cli -h 127.0.0.1 -p 6379
redis 键命令
DEL key 删除键,如果存在
DUMP key 返回存储在指定键的值的序列化版本
EXSITS key 检查该键是否存在
EXPIRE key seconds 指定键的过期时间
KEYS pattern 查找和指定模式匹配的所有键 。 KEYS * 查看当前数据库的所有key
MOVE key db 把当前数据库的键移动到另一个数据库
PERSIST key 移除过期的键
TTL key 获取键到期的剩余时间
RANDOMKEY 从redis返回随机键
RENAME key newly 更改键的名称
TYPE key 返回存储键的数据类型的值
SELECT 0-16 选择数据库
strings | hashes | |
指定键设置值 | SET key value | HSET key field value |
获取键对应的值 | GET key | HGET key field |
得到字符串的子字符串存放在一个键 | GETRANGE key start end | |
设置键的字符串值,并返回旧值 | GETSET key value | |
得到所有的给定键的值 | MGET key1 key2… | HMGET key field1 field2… |
设置键的值,只有当该键不存在时 | SETNX key value | HSETNX key field value |
获得存储的键的值的长度 | SETLEN key | HLEN key |
设置多个键和多个值 | MSET key1 value1 key2 value2 | HMSET key field1 vlaue1.. |
设置多个键多个值,只有在没有键存在时 | MSETNX key1 value1 key2 value2 | |
设置键的到期时间 | PESTEX key value | |
增加键的整数值一次 |
INCR key
|
|
由给定的数量递增键的整数值 | INCRBY key increment | HINCRBY key field increment |
递减键的整数值一次 | DECR key | |
由给定数目递减键的整数值 | DECRBY key decrement | |
追加值到一个键 | APPEND key value | |
删除一个或者多个字段 | HDEL key field | |
判断一个值是否存在 | HEXISTS key field | |
让所有的字段和值在指定的键存储在一个哈希 | HGETALL key | |
获取所有字段 | HKEYS key |
list | |
从一个列表其索引获取对应的元素 | LINDEX key index |
在列表的其他元素之后或之前插入一个元素 | LINSERT key BEFORE/AFTER pivot value |
获取列表的长度 | LLEN key |
获取并取出列表的第一个元素 | LPOP key |
在前面加上一个或者多个值的列表 | LPUSH key value1 value2 |
在前面加一个值列表,仅当列表中存在 | LPUSHX key value |
从一个列表中获取各种元素 | LRANGE key start stop |
从列表中删除元素 | LREM key count value |
在列表中的索引设置一个元素的值 | LSET key index value |
取出并获取列表的最后一个元素 | RPOP key |
删除最后一个元素的列表,将其附加到另一个列表并返回它 | RPOPLPUSH source destination |
添加一个或多个值多列表 | RPUSH key value1 value2… |
添加一个值到列表,仅当列表存在时 | RPUSHX key value |
set | sorted set | |
添加一个或者多个值 | SADD key member1 member2 | ZADD key score1 member1 scoer2 member2 |
移除并返回一个随机member | SPOP key | |
返回set的member个数 | SCARD key |
ZCARD key
|
删除一个或者多个字段 | SREM key member1 member2 | ZREM key member1 member2 |
判断一个值是否存在 | SISMEMBER key member | |
获取所有字段 | SMEMBERS key | |
随机返回一个字段 | SRANDMEMBER key | |
将spurce中的member移动到destination | SMOVE source destination member | |
多个集合的并集 | SUNION key1 key2 | |
把并集结果存储到新的set | SUNIONSTORE destination key1 key2 | |
多个集合的交集 | SINTER key1 key2 | |
把交集结果存储到指定的set | SINTERSTORE destination key1 key2 | |
差集(以第一个集合为准) | SDIFF key1 key2 | |
在有序集合增加成员的score | ZINCRBY key increment member | |
一个有序集合与给定值范围的member个数 | ZCOUNT key min man | |
由索引返回一个成员范围的有序集合 | ZRANGE key start stop withscores | |
返回member在有序集合中的index(低到高) | ZRANK key min max | |
返回member在有序集合中的index(高到低) | ZREVRANK key min max |
redis 支持简单的事务
MULTI 标记事务块的开始
EXEC MULTI后执行所发出的命令
DISCARD 清空MULTI队列并退出事务
UNWATCH 取消所有的对应关注键
WATCH key1 key2 关注给定项,以确定执行MULTI/EXEC 块
multi 之后再写命令,这些命令都回存在队列中 直到exec 才开始一条一条执行
只所以只是支持简单的事务,是因为如果队列中有多条语句,如果有语句执行失败,那么其他语句也会正常执行,不会回滚
这次主要整理了redis几种数据类型的命令,以及事务等基础概况,后续还会对其他方面进行记录。
我主要参考了一下资料