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 * 可以获取结果。
- 判断是否存在某个键
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
说明了如何获取有关服务器的所有统计信息和信息。