初学Redis,redis配置、终端操作、界面操作、java连接redis。
1、Redis介绍
1.1、什么是NoSql
为了解决高并发、高可用、高可扩展。大数据存储等一些列问
提的产生的数据库结局方案。
NoSql,叫做非关系型数据库,他的全名Not only sql。它不能
替代关系型数据库,只能作为关系型数据库的一个良好补充。
1.2 什么是redis
redis是使用c语言开发的一个高性能键值数据库。redis可以
通过一些键值类型来存储数据。
String字符串类型
map散列类型
list列表类型
set集合类型
sortedset 有序集合类型
1.3 redis启动
三个文件:
将前两个解压到D盘redis目录下
通过在终端cd /d 路径 找到redis解压目录
在解压目录当中执行 redis-server.exe redis.conf
redis默认自带16个子库,默认使用db0
切换子库命令:select index
1.4链接redis
1、通过终端在redis路径下执行redis-cli.exe连接到redis(如上图)
2、通过图形界面连接到redis
安装上面的第三个文件
3、jedis客户端
支持java语言连接(后面写)
1.5 redis的使用
终端命令:
赋值:
set key value
取值:
get key
取值并赋值
getset key value
设置/获取多个键值
mset key value key value key value...
mget key key key key ...
删除
del key
数值的增减
递增数字:当存储的字符串是整数时,redis提供了一个实用的命令
incr,其作用是让当前键值递增,并返回递增后的值。
incr key
增加指定的整数
incrby key increment
递减数值
decr num
递减指定整数:
decrby num decrement
2、其他命令
1、向尾部追加值
append的作用是向键值的末尾追加value.如果键不存在则将
该键的值设置为value.
append str1 "world!"
2、获取字符串长度
strlen命令返回值得长度,如果键不存在则返回0
strlen key
3、自增主键
商品编号、订单采用string的递增数字特性生成
定义商品编号key: items:id
incr items:id
4、赋值hset命令,不区分插入和更新操作,当执行插入操作时,
hset命令返回1,当执行更新操作时返回0
一次只能设置一个字段
hset key filed value
一次可以设置多个字段值
hmset key1 filed1 value1 filed2 vlaue2 ...
hmset user age 20 username lisi
当字段不存在时赋值,类似hset,区别在于如果字段存在,该命令
不执行任何操作
hsetnx key file value
hsetnx user age 30
如果user中没有age字段则设置为30,否则不执行任何操作
hsetnx user salary 20000
5、取值
一次只能获取一个字段值
hget key filed
一次获取多个字段值
hmget key filed1 filed2...
一次获取所有字段
hgetall key
6、删除字段
可以删除一个或多个字段,返回值是被删除的字段个数
hdel key filed...
7、增加数字
hincrby key filed increment
8、判断字段是否存在
hexists key filed
返回1说明该字段存在,0说明该字段不存在
9、只获取字段名或字段值
hkeys key :查看key对象当中的所有字段名
hvals key :查看key对象当中的所有字段值
10、获取字段数量
hlen key :查看key对象当中的属性数量
应用:
1、存储商品信息
商品字段:商品id、商品名称、商品描述、商品库存、商品评价
hmset items:1001 id 3 name apple price 999.99
获取商品信息
hget items:1001 id 查询该条商品的指定列
hgetall items:1001 查询该条商品的所有信息
List:
ArrayList和linkedList的区别
ArrayList是使用数组存储数据,特点:查询快、增删慢
LinkedList是使用双向链表存储数据,特点:增删快,查询慢
但是查询链表两端数据比较快
redis的list是采用链表来存储的,所以对于redis的list数据
类型的操作,是操作List的两端数据来操作的
1、向列表两端增加元素
向列表左边增加元素
lpush key value ...
向列表右侧增加元素
rpush key value ...
2、 查看列表
lrange命令是列表类型最常用的命令之一,获取列表中某一片段,返回 start、stop之间的所有元素(包含两端元素),索引从0开始,索引可以 是负数,如:'-1'代表最后边的一个元素
lrange key start stop
3、从列表两端弹出元素
LPOP命令从列表左边弹出一个元素,会分两步完成
第一步:是将列表左边的元素从列表中删除
第二步是返回被移除的元素值
LPOP key
RPOP key
4、获取列表中的元素个数
llen key
5、删除列表中指定的值
LREM 命令会删除列表中前count个值为value的元素,返回实际删除
元素个数。根据count值得不同,该命令执行方式会有所不同
当count>0时,lrem 会从列表左侧开始删除
当count<0时,lrem 会从列表后边开始删除
当count=0时,lrem 删除所有值为value元素
lrem key count value
6、获取/设置指定索引的元素值
LINDEX key index
设置指定索引的元素值
lset list:1 1 5
命令请自行测试,贴出我测试的:
-
-
-
D:\redis>redis-cli.exe
-
127.0.0.1:6379> SELECT 7
-
OK
-
127.0.0.1:6379[7]> set str 123
-
OK
-
127.0.0.1:6379[7]> get str
-
"123"
-
127.0.0.1:6379[7]> getset str2 12345
-
(nil)
-
127.0.0.1:6379[7]> get str2
-
"12345"
-
127.0.0.1:6379[7]> mset str3 fuzui str3 wwze
-
OK
-
127.0.0.1:6379[7]> mget str3 str3
-
1) "wwze"
-
2) "wwze"
-
127.0.0.1:6379[7]> del str3
-
(integer) 1
-
127.0.0.1:6379[7]> del str
-
(integer) 1
-
127.0.0.1:6379[7]> incr num
-
(integer) 1
-
127.0.0.1:6379[7]> incr num
-
(integer) 2
-
127.0.0.1:6379[7]> incrby num 3
-
(integer) 5
-
127.0.0.1:6379[7]> incr num
-
(integer) 6
-
127.0.0.1:6379[7]> incrby num 3
-
(integer) 9
-
127.0.0.1:6379[7]> decr num
-
(integer) 8
-
127.0.0.1:6379[7]> decrby num 4
-
(integer) 4
-
127.0.0.1:6379[7]> append str2 world
-
(integer) 10
-
127.0.0.1:6379[7]> get str2
-
"12345world"
-
127.0.0.1:6379[7]> strlen str2
-
(integer) 10
-
127.0.0.1:6379[7]> strlen dd
-
(integer) 0
-
127.0.0.1:6379[7]> append str1 hello
-
(integer) 5
-
127.0.0.1:6379[7]> get str1
-
"hello"
-
127.0.0.1:6379[7]> incr items:id
-
(integer) 1
-
127.0.0.1:6379[7]> incr items:id
-
(integer) 2
-
127.0.0.1:6379[7]> incr items:id
-
(integer) 3
-
127.0.0.1:6379[7]> hset user username wangze
-
(integer) 1
-
127.0.0.1:6379[7]> hmset manager name fuzui sex female
-
OK
-
127.0.0.1:6379[7]> hsetnx user username fuzui
-
(integer) 0
-
127.0.0.1:6379[7]> hsetnx user age 22
-
(integer) 1
-
127.0.0.1:6379[7]> hget user username
-
"wangze"
-
127.0.0.1:6379[7]> hget user age
-
"22"
-
127.0.0.1:6379[7]> hmget user username age
-
1) "wangze"
-
2) "22"
-
127.0.0.1:6379[7]> hgetall user
-
1) "username"
-
2) "wangze"
-
3) "age"
-
4) "22"
-
127.0.0.1:6379[7]> hdel user age
-
(integer) 1
-
127.0.0.1:6379[7]> hgetall user
-
1) "username"
-
2) "wangze"
-
127.0.0.1:6379[7]> hset user age 22
-
(integer) 1
-
127.0.0.1:6379[7]> hgetall user
-
1) "username"
-
2) "wangze"
-
3) "age"
-
4) "22"
-
127.0.0.1:6379[7]> hset user salary 18000
-
(integer) 1
-
127.0.0.1:6379[7]> hgetall user
-
1) "username"
-
2) "wangze"
-
3) "age"
-
4) "22"
-
5) "salary"
-
6) "18000"
-
127.0.0.1:6379[7]> hincrby user age 2
-
(integer) 24
-
127.0.0.1:6379[7]> hincrby user username 2
-
(error) ERR hash value is not an integer
-
127.0.0.1:6379[7]> hexists user age
-
(integer) 1
-
127.0.0.1:6379[7]> hexists user class
-
(integer) 0
-
127.0.0.1:6379[7]> hkeys user
-
1) "username"
-
2) "age"
-
3) "salary"
-
127.0.0.1:6379[7]> hvals user
-
1) "wangze"
-
2) "24"
-
3) "18000"
-
127.0.0.1:6379[7]> hlen user
-
(integer) 3
-
127.0.0.1:6379[7]> hmset items:1001 id 3 name a[[;e price 1399
-
OK
-
127.0.0.1:6379[7]> hget items:1001 id
-
"3"
-
127.0.0.1:6379[7]> hgetall items:1001
-
1) "id"
-
2) "3"
-
3) "name"
-
4) "a[[;e"
-
5) "price"
-
6) "1399"
-
127.0.0.1:6379[7]> hmset items:1001 name apple
-
OK
-
127.0.0.1:6379[7]> hgetall items:1001
-
1) "id"
-
2) "3"
-
3) "name"
-
4) "apple"
-
5) "price"
-
6) "1399"
-
127.0.0.1:6379[7]> lpush list:1 1 2 3 4 5
-
(integer) 5
-
127.0.0.1:6379[7]> rpush list:1 a b c d e
-
(integer) 10
-
127.0.0.1:6379[7]> lrange list:1 0 7
-
1) "5"
-
2) "4"
-
3) "3"
-
4) "2"
-
5) "1"
-
6) "a"
-
7) "b"
-
8) "c"
-
127.0.0.1:6379[7]> lrange list:1 0 -2
-
1) "5"
-
2) "4"
-
3) "3"
-
4) "2"
-
5) "1"
-
6) "a"
-
7) "b"
-
8) "c"
-
9) "d"
-
127.0.0.1:6379[7]> lpop list:1 0 1
-
(error) ERR wrong number of arguments for 'lpop' command
-
127.0.0.1:6379[7]> lpop list:1
-
"5"
-
127.0.0.1:6379[7]> lpop list:1
-
"4"
-
127.0.0.1:6379[7]> rpop ;list:1
-
(nil)
-
127.0.0.1:6379[7]> lrange list:1 0 -1
-
1) "3"
-
2) "2"
-
3) "1"
-
4) "a"
-
5) "b"
-
6) "c"
-
7) "d"
-
8) "e"
-
127.0.0.1:6379[7]> rpop list:1
-
"e"
-
127.0.0.1:6379[7]> llen list:1
-
(integer) 7
-
127.0.0.1:6379[7]> lrem list:1 2 2
-
(integer) 1
-
127.0.0.1:6379[7]> lrangger list:1 0 -1
-
(error) ERR unknown command 'lrangger'
-
127.0.0.1:6379[7]> lrange list:1 0 -1
-
1) "3"
-
2) "1"
-
3) "a"
-
4) "b"
-
5) "c"
-
6) "d"
-
127.0.0.1:6379[7]> lindex list:1 3
-
"b"
-
127.0.0.1:6379[7]> lset list:1 4 w
-
OK
-
127.0.0.1:6379[7]> lrange list:1 0 -1
-
1) "3"
-
2) "1"
-
3) "a"
-
4) "b"
-
5) "w"
-
6) "d"
-
127.0.0.1:6379[7]>
-
-
[点击并拖拽以移动]
-
这只是一小部分命令~
使用java连接redis:
1.eclipse创建一个java project
2.导包
3. 创建test类
-
import org.junit.Test;
-
import redis.clients.jedis.Jedis;
-
import redis.clients.jedis.JedisPool;
-
-
public class JedisTest {
-
-
@Test
-
public void jedisClient() {
-
//使用该对象连接到redis
-
Jedis jedis = new Jedis("localhost",6379);
-
//在redis当中存值
-
jedis.set("s2", "789456");
-
//通过redis取值
-
String result = jedis.get("s2");
-
System.out.println(result);
-
//关闭redis连接对象
-
jedis.close();
-
-
}
-
@Test
-
public void getValues() {
-
//使用该对象连接到redis
-
Jedis jedis = new Jedis("localhost",6379);
-
//在redis当中存值
-
jedis.set("s2", "789456");
-
//通过redis取值
-
String result = jedis.get("s2");
-
System.out.println(result);
-
//关闭redis连接对象
-
jedis.close();
-
}
-
@Test
-
//使用jedis连接池连接redis服务器
-
public void jedisPool() {
-
JedisPool pool = new JedisPool("localhost",6379);
-
//通过连接池获取jedis
-
Jedis jedis = pool.getResource();
-
String result = jedis.get("s2");
-
System.out.println(result);
-
//关闭jedis客户端
-
jedis.close();
-
-
}
-
}
4.测试
5.使用spring+redis
(1)导入spring相关包
(2)配置spring配置文件applicationContext.xml
-
<!-- 连接池配置 -->
-
<bean id = "jedisPoolConfig" class = "redis.clients.jedis.JedisPoolConfig">
-
<!-- 最大连接数 -->
-
<property name="maxTotal" value="100000"></property>
-
-
<!-- 最大空闲数 -->
-
<property name="maxIdle" value="10000"></property>
-
</bean>
-
-
<!-- 连接redis -->
-
<bean id = "jedisPool" class = "redis.clients.jedis.JedisPool" destroy-method="close">
-
<constructor-arg name = "poolConfig" ref = "jedisPoolConfig "></constructor-arg>
-
<constructor-arg name = "host" value = "localhost"></constructor-arg>
-
<constructor-arg name = "port" value = "6379"></constructor-arg>
-
</bean>
(3)写入一个方法
-
@Test
-
public void springJedisPool() {
-
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
-
JedisPool pool = (JedisPool)ac.getBean("jedisPool");
-
Jedis jedis = null;
-
try {
-
jedis = pool.getResource();
-
jedis.set("name", "fuzui");
-
String name = jedis.get("name");
-
System.out.println(name);
-
}catch(Exception e) {
-
e.printStackTrace();
-
}finally {
-
if(jedis != null) {
-
jedis.close();
-
}
-
}
-
}
(4)测试
解释都在代码注释当中了~
学习redis的第一天.
redis下载:
csdn下载:1积分下载redis
百度网盘免费下载:redis工具
提取码:za75
java连接redis需要的包:
csdn下载:1积分下载jedis
百度网盘免费下载:jedis包
提取码:47ro
spring完整5.0.7包:
csdn下载:1积分下载spring包
百度网盘免费下载:spring包
提取码:2wtu
有问题或bug可以留言,一天内回复~
文章来源: fuzui.blog.csdn.net,作者:极客时代,版权归原作者所有,如需转载,请联系作者。
原文链接:fuzui.blog.csdn.net/article/details/84900879
- 点赞
- 收藏
- 关注作者
评论(0)