redis

redis
潘数据库分类
——关系型数据库
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。 包含Mysql、Oracle、SqlServer等。随着互联网WEB2.0时代的到来,面临着高并发、高性能的一系列的挑战。
——非关系型数据库
新型的数据库模型,也被称为NOSQL数据库,NOSQL本意是“NOT ONLY SQL”,并不是彻底要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充。包含 memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)
非关系型数据库的分类
1、key-value存储数据库
键值数据库就类似传统语言中使用哈希表,可以通过key来添加、查询或删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性 。典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB
2、列存储(Column-oriedted)数据库
了解即可,一般公司用不到,典型产品:Cassandra,HBase
3、面向文档(Document-Oriented)数据库
面向文档数据库会将数据以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。典型产品:MorgoDB、CouchDB
4、图形(Graph)数据库
Redis安装
Window下安装:
下载地址:https://github.com/MSOpenTech/redis/releases
选择64位的ZIP压缩包点击下载,下载完成后解压,并将解压后的文件夹重命名为redis,方便后面使用
运行Redis服务
1、使用cmd命令行进入解压后的redis目录
2、在redis目录下 运行redis-server redis.windows.conf,启动redis服务,此时当关闭命令窗口redis服务也会关闭,其中后面的redis.window.conf可以省略
将Redis配成windows服务
3、可以将redis服务安装成windows服务,在redis目录下的命令窗口输入:redis-server --service-install redis.windows.conf即可
4、查看服务是否配置成功,右键计算机—管理—服务,查找是否有Redis服务,如果启动,代表windows上的redis服务已经配置成功,redis服务已经启动。
Redis命令
启动本机Redis客户端:redis–cli ,此命令连接到本机的Redis服务,同时用PING命令检测本机Redis服务是否启动
连接远程Redis服务: redis–cli –h host –p port –a “password”
其中host为远程主机IP地址
Port为远程Redis服务端口号
Password为远程Redis服务密码
用客户端连接了redis服务之后,就可以在当前命令行里使用redis命令来操作redis数据库了
Redis数据类型
1.Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合)。
2.String(字符串)(最常用)
string是redis最基本的类型,是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
3.Hash(哈希)(常用)
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 key和 value 的映射表,hash 特别适合用于存储对象,相当于java中的Map集合。
4.List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
5.Set(集合)
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
6.zset(sorted set:有序集合)(了解)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
Redis键命令
SET keyname value 新建一个键值对,keyname为键名,value为存储的值
DEL keyname 删除一个已存在的key,keyname为键名,成功返回1,失败返回0
EXISTS keyname 判断一个key是否存在,keyname为键名,
RENAME key newkey 重命名一个已存在的key,key为原来的键名,newkey为新键名
EXPIRE key seconds 给一个已存在的key设置过期时间,key为键名,seconds为秒数
PERSIST keyname 移除key的过期时间,key将永久保持,keyname为键名
TTL keyname 以毫秒数返回key的剩余时间,keyname为键名
RANDOMKEY 从当前数据库随机返回一个key
Redis字符串命令
SET keyname value 设置一个键值对,keyname为键名,value为存储的值
GET keyname 获取指定key对应的值,keyname为键名
GETSET keyname value 将指定key的值设为value,同时返回该key原来的旧值
MGET key1 key2….. 获取所有给定key的值
GETRANGE key start end 获取指定key里的截取字符串,start为起始位置,end为结束位置
STRLEN keyname 获取指定key里存储字符串的长度
INCR keyname 给指定key里存储的数字增1
APPEND keyname value 给指定key里存储的字符串末尾追加value
Redis哈希(hash)命令
HMSET key field1 “value1”… 同时将多个 field-value (域-值)对设置到哈希表 key 中
HDEL key field1 field2….. 删除指定key哈希表的一个或者多个字段,key为哈希表的键,field1为哈希表里的字段名
HEXISTS key field 查看指定key的哈希表内是否存在field字段
HGET key field 获取指定key的哈希表内的field字段存储的值
HGETALL key 获取指定key的哈希表的所有字段和值
HKEYS key 获取指定key的哈希表中所有的字段
HMGET key field1 field2… 获取指定key的哈希表中所有指定字段的值
HVALS key 获取指定key的哈希表中所有的值
Redis列表(List)命令
LPUSH key value1 value2… 同时将一个或多个值插入到列表头部,设定的key即为列表的键
LPUSH key value1 value2… 同时将一个或多个值插入到已存在的key对应的列表头部
LPOP key 移出并获取指定key的列表中的第一个元素
LINDEX key index 通过索引获取指定key的列表中的元素,index从0开始
LRANGE key start stop 通过索引获取指定key的列表中某个范围的元素
RPOP key 移出并获取指定key的列表中最后一个元素
LREM key count value 移出指定key的列表中,与value相等的元素 count>0 从表头开始搜索;count<0 从表尾开始搜索;count=0 移出所有与value相等的元素
LTRIM key start stop 截取指定key的列表中的部分元素
Redis集合(Set)命令
SADD key m1 m2… 向集合添加一个或多个成员
SCARD key 获取指定key对应的集合内的成员数
SINTER key1 key2 获取所有给定集合的交集
SISMEMBER key member 判断member元素是否是集合key的成员
SMEMBERS key 返回集合中的所有成员
SPOP key 返回并移出集合中的一个随机元素
SREM key member1 member2 移除集合中一个或多个成员
Redis缓存特性
性能极高
– Redis能读的速度是110000次/s,写的速度是81000次/s ,而关系型数据库MYSQL读写速度仅为2000次/s左右。
丰富的数据类型
– Redis支持二进制安全的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 性
– Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
丰富的特性
– Redis还支持 publish/subscribe通知订阅模式, key 过期等等特性。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果