本文共 6427 字,大约阅读时间需要 21 分钟。
redis使用总结(一)(redis客户端使用) NoSQL
NoSQL摘自百度百科NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
NoSQL数据库的四大分类
键值(Key-Value)存储数据库
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
列存储数据库。
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
文档型数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
图形(Graph)数据库
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph.
因此,我们总结NoSQL数据库在以下的这几种情况下比较适用: 1、数据模型比较简单; 2、需要灵活性更强的IT系统; 3、对数据库性能要求较高; 4、不需要高度的数据一致性; 5、对于给定key,比较容易映射复杂值的环境。
Redis 简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库,也是NoSQL数据库。Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。 Redis 优势丰富的数据类型 redis是基于key/value形式进行存储 key我们一般认为是String类型,value有五种类型
redis的windows客户端端使用
Redis命令十分丰富,包括的命令组有Cluster、Connection、Geo、Hashes、HyperLogLog、Keys、Lists、Pub/Sub、Scripting、Server、Sets、Sorted Sets、Strings、Transactions一共14个redis命令组两百多个redis命令,如果您有兴趣请上redis官网查看全部的redis命令,在这里我们只针对redis的常用命令以及五种数据类型相关的命令进行操作1.启动redis-server.exe 服务器端2.打开redis-cli.exe 客户端redis的常用命令(redis中的key和value都区分大小写)String类型的指令
1. 存储: set key value 127.0.0.1:6379> set username laowang OK2. 获取: get key 127.0.0.1:6379> get username "laowang"3. 删除: del key 127.0.0.1:6379> del username (integer) 1
Hash类型的指令
1. 存储: hset key field value 127.0.0.1:6379> hset myhash address beijing (integer) 1 127.0.0.1:6379> hset myhash level one (integer) 12. 获取: * hget key field: 获取指定的field对应的值 127.0.0.1:6379> hget myhash level "one" * hgetall key:获取所有的field和value 127.0.0.1:6379> hgetall myhash 1) "address" 2) "beijing" 3) "level" 4) "one"3. 删除: hdel key field 127.0.0.1:6379> hdel myhash level (integer) 1
List类型的指令
1. 添加: 1. lpush key value: 将元素加入列表左侧 2. rpush key value:将元素加入列表右侧 127.0.0.1:6379> lpush myList 1 (integer) 1 127.0.0.1:6379> lpush myList 2 (integer) 2 127.0.0.1:6379> rpush myList 2 (integer) 3 127.0.0.1:6379> rpush myList 3 (integer) 42. 获取:lrange key start end :范围获取 (0 -1 指获取所有) 127.0.0.1:6379> lrange myList 0 -1 1) "2" 2) "1" 3) "2" 4) "3"3. 删除: 1. lpop key: 删除列表最左边的元素,并将元素返回 2. rpop key: 删除列表最右边的元素,并将元素返回 127.0.0.1:6379> lpop myList "2" 127.0.0.1:6379> rpop myList "3"
Set类型的指令 set类型的value是唯一的
1. 存储:sadd key value 127.0.0.1:6379> sadd myset one (integer) 1 127.0.0.1:6379> sadd myset one (integer) 0 127.0.0.1:6379> sadd myset ONE (integer) 12. 获取:smembers key:获取set集合中所有元素 127.0.0.1:6379> smembers myset 1) "one" 2) "ONE"3. 删除:srem key value:删除set集合中的某个元素 127.0.0.1:6379> srem myset ONE (integer) 1
Sorted Set类型的指令
1. 存储:zadd key score value 127.0.0.1:6379> zadd mysort 666 laotie (integer) 1 127.0.0.1:6379> zadd mysort 66 meimaobing (integer) 1 127.0.0.1:6379> zadd mysort 6 chenduxiu (integer) 12. 获取:zrange key start end [withscores] 127.0.0.1:6379> zrange mysort 0 -1 1) "chenduxiu" 2) "meimaobing" 3) "laotie" 127.0.0.1:6379> zrange mysort 0 -1 withscores 1) "chenduxiu" 2) "6" 3) "meimaobing" 4) "66" 5) "laotie" 6) "666"3. 删除:zrem key value 127.0.0.1:6379> zrem mysort laotie (integer) 1
其他常用的指令 :
1. dbsize :返回当前数据库的 key 的数量。 127.0.0.1:6379> dbsize (integer) 2
2. Keys pattern:查找所有符合给定模式 pattern 的 key 。 在redis中存值 127.0.0.1:6379> set One1 redis OK 127.0.0.1:6379> set One2 mysql OK 127.0.0.1:6379> set One3 oracle OK 127.0.0.1:6379> set One4 mongodb OK
127.0.0.1:6379> keys One* 1) "One3" 2) "One4" 3) "One1" 4) "One2"
127.0.0.1:6379> keys * (该指令不建议使用) 1) "myhash" 2) "One3" 3) "One4" 4) "One1" 5) "One2" 6) "mysort"
3. del key [key …] :删除给定的一个或多个key,以及对应的value,不存在的 key 会被忽略,该指令可以将任意数据类型删除 127.0.0.1:6379> del One1 One2 (integer) 24. type key :返回 key 所储存的值的类型。 127.0.0.1:6379> type mysort zset 127.0.0.1:6379> type myhash hash 127.0.0.1:6379> type One3 string5. exists key :检查指定key是否存在 127.0.0.1:6379> exists hehe (integer) 0 127.0.0.1:6379> exists myhash (integer) 16. expire key seconds:为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。seconds的单位为秒。 127.0.0.1:6379> expire One3 20 (integer) 1 127.0.0.1:6379> get One3 "oracle" 127.0.0.1:6379> get One3 "oracle" 127.0.0.1:6379> get One3 "oracle" 127.0.0.1:6379> get One3 (nil)7. ttl key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。 127.0.0.1:6379> set myTtl myRedis OK 127.0.0.1:6379> set myTtl2 myRedis2 OK 127.0.0.1:6379> expire myTtl 30 (integer) 1 127.0.0.1:6379> ttl myTtl (integer) 20 127.0.0.1:6379> ttl myRedis (integer) -2 127.0.0.1:6379> ttl myTtl2 (integer) -18. flushall:清空整个 Redis 服务器的数据(删除所有数据库的所有 key ),此命令从不失败。 flushdb :清空当前数据库中的所有 key,此命令从不失败。 127.0.0.1:6379> flushdb OK 127.0.0.1:6379> flushall OK 127.0.0.1:6379> keys * (empty list or set)
原文地址
转载地址:http://rntyx.baihongyu.com/