Redis 简述
文章目录
[隐藏]
- Redis 简介
- Redis 优势
- Redis 与其他 key-value 存储有什么不同?
- redis 的安装
- redis 服务端开启
- redis 客户端连接
- Jedis 开发
- Redis 常用命令
- 1. 连接操作命令
- 2 持久化
- 3. 远程服务控制
- 4. 对 key 操作的命令
- 5. String
- 6. List
- 7. Set
- 8. Hash
Redis 简介
Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key – value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
- Redis支持数据的备份,即 master-slave 模式的数据备份。
Redis 优势
- 性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。
- 丰富的数据类型 – Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis 还支持 publish/subscribe, 通知, key 过期等等特性。
Redis 与其他 key-value 存储有什么不同?
- Redis 有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis 的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
- Redis 运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样 Redis 可以做很多内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
redis 的安装
下载安装包,博主采用的是 redis-3.0.5.tar.gz,可以在这里下载.
http://download.csdn.net/detail/u013256816/9487005
安装步骤:
tar -zvxf redis-3.0.5.tar.gz cd redis-3.0.5 make
redis 服务端开启
./redis-server
开启之后如下图所示:
这种方式是启动的 redis 使用的是默认配置,也可以通过启动参数考古 redis 使用指定配置文件:
./redis-server [redis.conf 的路径]
如果修改 redis.conf,采用 redis 默认的 redis.conf 文件, redis 默认只能通过 127.0.0.1:6379 这个地址访问,这样就只能在本机上操作了,如果想要远程操作就不可行了。这里需要修改 redis.conf 这个配置文件,在配置文件中添加相应的 ip 地址,这里假如添加 ip 地址:10.10.195.112,只需在 redis.conf 这个配置文件中添加:
bind 10.10.195.112 bind 127.0.0.1
这样就可以远程访问 redis 服务器了(先配置,后开启 redis 服务)。
redis 客户端连接
./redis-cli (本地)
./redis-cli -h [host] -p [port] -a [password] (远程服务器)
Jedis 开发
使用 java 开发 redis,博主使用的是 jedis,需要引入 jedis 的 jar,可以在这里下载。还需要 commons-pool.jar 包
http://download.csdn.net/detail/u013256816/9487008
连接
Jedis jedis = new Jedis(“10.10.195.112”); System.out.println(jedis.ping());
输出:PONG
操作字符串
jedis.set(“name”, “zzh”); System.out.println(jedis.get(“name”));
输出:zzh
操作列表
jedis.lpush(“nblist”, “jj”); jedis.lpush(“nblist”, “jj”); jedis.lpush(“nblist”, “yy”); jedis.lpush(“nblist”, “qq”); List<String> list = jedis.lrange(“nblist”, 0, -1); int length = list.size(); for(int i=0;i<length;i++) { System.out.println(list.get(i)); }
输出:
qq yy jj jj
获取 redis 中所有的键
Set<String> set = jedis.keys(“*”); for(String key : set) { System.out.println(key); }
输出:
nam name tutorial list tutorial-list nblist tutoriallist keyname user listt zsetkey hash-key
Redis 常用命令
1. 连接操作命令
- quit:关闭连接(connection)
- auth:简单密码认证
- help cmd: 查看 cmd 帮助,例如:help quit
2 持久化
- save:将数据同步保存到磁盘
- bgsave:将数据异步保存到磁盘
- lastsave:返回上次成功将数据保存到磁盘的 Unix 时戳
- shutdown:将数据同步保存到磁盘,然后关闭服务
3. 远程服务控制
- info:提供服务器的信息和统计
- monitor:实时转储收到的请求
- slaveof:改变复制策略设置
- config:在运行时配置 Redis 服务器
4. 对 key 操作的命令
- exists(key):确认一个 key 是否存在
- del(key):删除一个 key
- type(key):返回值的类型
- keys(pattern):返回满足给定 pattern 的所有 key
- randomkey:随机返回 key 空间的一个
- keyrename(oldname, newname):重命名 key
- dbsize:返回当前数据库中 key 的数目
- expire:设定一个 key 的活动时间(s)
- ttl:获得一个 key 的活动时间
- select(index):按索引查询
- move(key, dbindex):移动当前数据库中的 key 到 dbindex 数据库
- flushdb:删除当前选择数据库中的所有 key
- flushall:删除所有数据库中的所有 key
5. String
- set(key, value):给数据库中名称为 key 的 string 赋予值 value
- get(key):返回数据库中名称为 key 的 string 的 value
- getset(key, value):给名称为 key 的 string 赋予上一次的 value
- mget(key1, key2,…, key N):返回库中多个 string 的 value
- setnx(key, value):添加 string,名称为 key,值为 value
- setex(key, time, value):向库中添加 string,设定过期时间 time
- mset(key N, value N):批量设置多个 string 的值
- msetnx(key N, value N):如果所有名称为 key i 的 string 都不存在
- incr(key):名称为 key 的 string 增 1 操作
- incrby(key, integer):名称为 key 的 string 增加 integer
- decr(key):名称为 key 的 string 减 1 操作
- decrby(key, integer):名称为 key 的 string 减少 integer
- append(key, value):名称为 key 的 string 的值附加 value
- substr(key, start, end):返回名称为 key 的 string 的 value 的子串
6. List
- rpush(key, value):在名称为 key 的 list 尾添加一个值为 value 的元素
- lpush(key, value):在名称为 key 的 list 头添加一个值为 value 的 元素
- llen(key):返回名称为 key 的 list 的长度
- lrange(key, start, end):返回名称为 key 的 list 中 start 至 end 之间的元素
- ltrim(key, start, end):截取名称为 key 的 list
- lindex(key, index):返回名称为 key 的 list 中 index 位置的元素
- lset(key, index, value):给名称为 key 的 list 中 index 位置的元素赋值
- lrem(key, count, value):删除 count 个 key 的 list 中值为 value 的元素
- lpop(key):返回并删除名称为 key 的 list 中的首元素
- rpop(key):返回并删除名称为 key 的 list 中的尾元素
- blpop(key1, key2,… key N, timeout):lpop 命令的 block 版本。
- brpop(key1, key2,… key N, timeout):rpop 的 block 版本。
- rpoplpush(srckey, dstkey):返回并删除名称为 srckey 的 list 的尾元素,并将该元素添加到名称为 dstkey 的 list 的头部
7. Set
- sadd(key, member):向名称为 key 的 set 中添加元素 member
- srem(key, member) :删除名称为 key 的 set 中的元素 member
- spop(key) :随机返回并删除名称为 key 的 set 中一个元素
- smove(srckey, dstkey, member) :移到集合元素
- scard(key) :返回名称为 key 的 set 的基数
- sismember(key, member) :member 是否是名称为 key 的 set 的元素
- sinter(key1, key2,…key N) :求交集
- sinterstore(dstkey, (keys)) :求交集并将交集保存到 dstkey 的集合
- sunion(key1, (keys)) :求并集
- sunionstore(dstkey, (keys)) :求并集并将并集保存到 dstkey 的集合
- sdiff(key1, (keys)) :求差集
- sdiffstore(dstkey, (keys)) :求差集并将差集保存到 dstkey 的集合
- smembers(key) :返回名称为 key 的 set 的所有元素
- srandmember(key) :随机返回名称为 key 的 set 的一个元素
8. Hash
- hset(key, field, value):向名称为 key 的 hash 中添加元素 field
- hget(key, field):返回名称为 key 的 hash 中 field 对应的 value
- hmget(key, (fields)):返回名称为 key 的 hash 中 field i 对应的 value
- hmset(key, (fields)):向名称为 key 的 hash 中添加元素 field
- hincrby(key, field, integer):将名称为 key 的 hash 中 field 的 value 增加 integer
- hexists(key, field):名称为 key 的 hash 中是否存在键为 field 的域
- hdel(key, field):删除名称为 key 的 hash 中键为 field 的域
- hlen(key):返回名称为 key 的 hash 中元素个数
- hkeys(key):返回名称为 key 的 hash 中所有键
- hvals(key):返回名称为 key 的 hash 中所有键对应的 value
- hgetall(key):返回名称为 key 的 hash 中所有的键(field)及其对应的 value
原文出处:jikewenku -> https://www.jikewenku.com/talks/9932.html
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。