redis 随笔

简介

Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。

Redis是一个内存数据库,但在磁盘数据库上是持久的,因此它代表了一个不同的权衡,在这种情况下,在不能大于存储器(内存)的数据集的限制下实现非常高的写和读速度。

内存数据库的另一个优点是,它与磁盘上的相同数据结构相比,复杂数据结构在内存中存储表示更容易操作,并且可在这些数据类型上定义原子操作。。 因此,Redis可以做很少的内部复杂性。

redis 和 memcached####

  • redis 支持复杂的数据结构:redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择。
  • redis 原生支持集群模式:在 redis3.x 版本中,便能支持 cluster 模式,而 memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。
  • 性能对比:由于 redis 只使用单核,而 memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。而在 100k 以上的数据中,memcached 性能要高于 redis,虽然 redis 最近也在存储大数据的性能上进行优化,但是比起 memcached,还是稍有逊色。
  • redis是内存数据库,优点见上述

具体操作###

redis运行

本地输入

redis-server redis.windows.conf

检测redis是否工作, 输入命令PING


127.0.0.1:6379> ping
PONG

这表明Redis已成功在您的计算机上安装了。

redis 配置

在Redis中,在Redis的根目录下有一个配置文件(redis.conf)。当然可以通过Redis CONFIG命令获取和设置所有的Redis配置。

1、(1)redis获得配置:

 127.0.0.1:6379>config get requirepass "pass" 

即获取到 连接密码

(2)设置密码:


127.0.0.1:6379> config set requirepass "pass" 
OK 
127.0.0.1:6379> config get requirepass 
1) "requirepass" 
2) "pass"

设置密码后,如果任何客户端运行命令而不进行身份验证,则会返回一个(error) NOAUTH Authentication required.的错误信息。 因此,客户端需要使用AUTH命令来验证。

127.0.0.1:6379> AUTH pass
OK

2、编辑配置
要更新配置,可以直接编辑redis.conf文件,也可以通过CONFIG set命令更新配置。


redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

示例

redis 127.0.0.1:6379> CONFIG SET loglevel "notice" 
OK 
redis 127.0.0.1:6379> CONFIG GET loglevel  
1) "loglevel" 
2) "notice"

3 、基础命令

1)获得符合规则的键名列表

KEYS PATTERN

使用SET命令建立一个名为bar的键,同样keys * 可以获取结果。

  1. 判断是否存在某个键
EXISTS key


如果键存在则返回1,不存在则返回0

3)删除键

DEL key [key...]

可以删除一个或多个键,返回值为删除的键的个数。

4)获取键值的数据类型

TYPE key

4、redis 数据类型

(1)字符串
Redis中的字符串是一个字节序列。Redis中的字符串是二进制安全的,这意味着它们的长度不由任何特殊的终止字符决定。因此,可以在一个字符串中存储高达512兆字节的任何内容。

示例:

redis 127.0.0.1:6379> set name "hello" 
OK 
redis 127.0.0.1:6379> get name 
"hello"

set 与get 为redis命令,name为存储的键,hello 为存储的值。

(2)hash/散列
Redis散列/哈希(Hashes)是键值对的集合。Redis散列/哈希是字符串字段和字符串值之间的映射。因此,它们用于表示对象。


127.0.0.1:6379> hmset key name "miao" password "wang" points 200

127.0.0.1:6379> hgetall key
1) "name"
2) "miao"
3) "password"
4) "wang"
5) "points"
6) "200"

散列/哈希数据类型用于存储包含用户的基本信息的用户对象。这里HMSET,HGETALL是Redis的命令,而key是键的名称。

(3)列表
Redis集合是字符串的无序集合。在Redis中,您可以添加,删除和测试成员存在的时间O(1)复杂性。

127.0.0.1:6379> sadd fruits apple
(integer) 0
127.0.0.1:6379> sadd fruits pear
(integer) 0
127.0.0.1:6379> sadd fruits orange
(integer) 1
127.0.0.1:6379> sadd fruits orange
(integer) 0
127.0.0.1:6379> smembers fruits
1) "apple"
2) "orange"
3) "pear"

列表具有不重复性。
一个集合中的最大成员数量为2^32 - 1(即4294967295,每个集合中元素数量可达40亿个)个。

(4)redis集合
Redis集合是唯一字符串的无序集合。 唯一值表示集合中不允许键中有重复的数据。

在Redis中设置添加,删除和测试成员的存在(恒定时间O(1),而不考虑集合中包含的元素数量)。列表的最大长度为2^32 - 1个元素(即4294967295,每组集合超过40亿个元素)。

127.0.0.1:6379> sadd myset "pencil"
(integer) 0
127.0.0.1:6379> sadd myset "book"
(integer) 0
127.0.0.1:6379> sadd myset "card"
(integer) 1
127.0.0.1:6379> sadd myset "card"
(integer) 0
127.0.0.1:6379> smembers myset
1) "book"
2) "card"
3) "pencil"

在上面的示例中,通过命令SADD将三个值插入到名称为“myset”的Redis集合中。

redis服务器

127.0.0.1:6379> info

说明了如何获取有关服务器的所有统计信息和信息。

posted @ 2018-09-28 11:56  刘莹小西瓜  阅读(147)  评论(0编辑  收藏  举报