了解redis之前需要理解数据结构:String、Set、Hash、List、sorted Set
redis遵循BSD协议,高性能key-value数据库。
redis有三大特点:
- redis支持数据持久化、可以将内存中的数据保存到磁盘中,重启时可以再次加载进行使用。
- redis不仅仅支持简单的key-value类型的数据,同时还提供list、set、hash等数据结构的存储、
- redis支持数据的备份、即master-slave模式的数据备份
redis优势
- 性能高。读的速度110000次/s,写的速度81000次/s
- 丰富的数据类型-----支持二进制的 String、list、hash、set、sorted set 数据类型操作
- 原子性、redis的所有操作都是原子性的。操作要么成功要么失败。单个操作是原子性的,多个操作也支持事务,即原子性通过MULTI和EXEC指令包起来。
- 丰富的特性-redis还支持publish/subscribe,通知key过期等
redis 默认端口 6379
如果redis安装报错 bing:No error,解决办法如下:
cmd 进入redis目录,默认目录: c:\Program Files\Redis
在命令行中运行
redis-cli.exe
127.0.0.1:6379>shutdown
not connected>exit
然后重新运行redis-server.exe redis.windows.conf,启动成功!
redis 连接命令: redis-cli.exe -h 127.0.0.1 -p 6379
linux 默认关闭守护进程 daemonize
1、string 是redis最基本数据类型,二级制安全的,可以包含任何数据,比如jpg图片或者序列化对象,最大可以存储512MB。
redis 127.0.0.1:6379>SET key value
redis 127.0.0.1:6379> SET name "runoob"
OK
redis 127.0.0.1:6379> GET name
"runoob"
2、Hash 是一个键值(key=》value)对的集合,Redis hash是一个string类型的field和value的映射表,哈是特别适合存储对象,每个 hash 可以存储 232 -1 键值对(40多亿)。
redis> HMSET myhash field1 "Hello" field2 "World"
"OK"
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
3、List 是简单的字符串列表,按照插入顺序排序,列表最多可存储 232 - 1(40多亿) 元素。
redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq" 2) "mongodb" 3) "redis"
4、set集合,是string类型的无序集合,通过hash表实现的,所以添加、删除、查找的复杂度都是O(1).sadd命令,添加一个string元素到key对应的set集合中,成功返回1,已经存在返回0,如果key对应的set不存在则返回错误,集合中最大的成员数为 232 - 1(40多亿)。
redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob
1) "redis" 2) "rabitmq" 3) "mongodb"
5、zset(sorted set 有序集合)
Redis zset和set都是string类型元素的集合,且不允许重复的成员。每个元素都会关联一个double类型的分数。redis通过分数来为集合中成员进行从小到大的排序。
zset的成员是唯一的,但分数可以重复。
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
1) "mongodb" 2) "rabitmq" 3) "redis"